Javascript 高级程序设计
记录下读书心得
Goals determine what you are going to be
理解JavaScript变量声明行为的一个好办法是把变量声明看作由两部分组成,即声明和赋值。JavaScript隐式地提升(hoists)声明部分到封闭函数的顶部,而将赋值留在原地。
换句话说,变量的作用域是整个函数,但仅在var语句出现的位置进行赋值
介绍
1.transitionend animationend 事件兼容问题
2.transitionend有过渡效果的css属性
3.webkitAnimationEnd(animationend)事件与webkitTransitionEnd(transitionend)事件
4.transitionend事件的多次执行及解决办法, 不同于transitionend事件,animationend只会在动画完成后执行一次
为了标识用户身份而存储在用户本地上的数据,cookie数据在同源的http请求中携带和传递的信息,localStorage sessionStorage不会把数据发送到服务器,只存储在本地,
另外cookie数据大小不能超过4k ,localStorage sessionStorage虽然也有存储大小的限制,但可以大很多,可以达到5M甚至更大;
localStorage存储永久数据,浏览器关闭数据依然存在除非主动去删除 sessionStorage临时会话,浏览器窗口关闭数据即自动删除 cookie可以设置有效期,数据一直存在到有效期结束
强制缓存:
- 在web服务器返回的响应中添加Expires和Cache-Control Header
- Expires:比较老的做法,设置一个过期时间
- Cache-Control:设置的是相对时间 Cache-Control的优先级高于Expires
协商缓存
- 【Last-Modified和If-Modified-Since配合使用】【ETag和If-None-Match配合使用】 后者更靠谱一些
- 请求头参数:If-Modified-Since If-None-Match
- 响应头参数:Last-Modified ETag
- 请求头参数和响应头参数 比较 来看是否命中缓存
强制缓存的优先级高于协商缓存
jQuery在遵循W3C规范的情况下,对事件的常用属性进行了封装,使得事件处理在各大浏览器下都可以正常的运行而不需要进行浏览器类型判断,
如果想了解如何封装,可以看jquery源码