原生js(二)
js的同步、异步和延迟
1、默认情况下,js是同步和阻塞DOM解析的。在解析DOM的过程中,当遇到script时,会暂停DOM解析,开始请求script并执行js,执行完成之后再接着解析DOM树。
2、之前一直不知道DOMReady是在什么时候,也从来没在书上看到对这个时间点的解释。现在感觉,DOMReady是解析完body的结束标签之后。所以所有的js的应该绑定在body标签之前。否则其中的DOMReady所触发的回调可能无法执行。
3、想要js不阻塞DOM解析的方法有:
将js写在body的结束标签之前,其它所有的html之后
为script添加defer和async属性。添加了这两个属性是为了告诉浏览器这个scirpt不会对DOM产生影响,可以继续往下解析DOM树,但此时js请求已经发出。
4、js的执行分两种,一种是在加载后立即执行,另一种是事件驱动执行。