我的前端笔记
双等号的类型转换
undefined == null; // true
分析:undefined与null 但不全等(===)
当为number与string时,会将string转换为number;
number和boolean时,会将boolean转换为number
number或string与Object,会将Object转换成number或string
NaN == NaN; // false
[] == false; // true
[] == ![]; // true
alert(!![]) //true
alert(![]) //false
拓展:for循环中的效率问题?)
1.for(var i=0;i<arr.length;i++)
2.for(var i in arr)
3.for(var i=0,len=arr.length;i<len;i++)
第三种效率更高!
在大数据下:
第三种方式比第一种执行速度快3~4倍;
至于第三种比第三种快100多倍开外(详细数据:http://www.111cn.net/wy/js-ajax/39368.htm)
js异步加载
渲染引擎遇到 script 标签会停下来,等到执行完脚本,继续向下渲染
defer 是“渲染完再执行”,async 是“下载完就执行”,defer 如果有多个脚本,会按照在页面中出现的顺序加载,多个async 脚本不能保证加载顺序
加载 es6模块的时候设置 type=module,异步加载不会造成阻塞浏览器,页面渲染完再执行,可以同时加上async属性,异步执行脚本(利用顶层的this等于undefined这个语法点,可以侦测当前代码是否在 ES6 模块之中)

浙公网安备 33010602011771号