this执行上下文
this不是在写函数时确定指向的, 它是在函数执行中才能确定上下文, this是执行上下文环境的一部分
1 | var a = { |
0.1 + 0.2 === 0.3问题
1 | function numberEpsilon(arg1, arg2){ |
深拷贝
1 | function deepCopy(obj){ |
浏览器缓存知识
浏览器第一次加载资源, 服务器返回200, 浏览器从服务器下载资源文件, 并缓存资源文件与response header, 以供下次加载对比使用
下一次加载资源, 由于强制缓存优先级高, 先比较上一次返回200的时间差, 如果没有超过cache-control设置的max-age, 则没有过期, 并命中强缓存, 从本地读取资源. 如果不支持http1.1 则用expires判断是否过期
如果资源已经过期, 则表明强制缓存没有被命中, 则开始协商缓存, 向服务器发送带有if-none-match和if-modified-since的请求
服务器收到请求后, 优先根据ETag的值判断被请求的文件有没有被修改, ETag值则一致则没有修改, 命中协商缓存返回304; 如果不一致则返回新资源带上新的ETag并返回200