JS阻塞DOM解析,也就会阻塞页面。

这也是为什么JS文件放在最上面的起因。
那为什么会阻塞DOM解析呢?

· 因为JS是可操纵DOM的,· 如果在批改这些元素属性同时渲染页面(即js线程和UI线程同时运行),· 那么渲染线程前后取得的元素数据就可能不统一了。· 为了避免渲染呈现不可预期的后果,浏览器设置 GUI渲染线程与js引擎为互斥的关系。· 当JS引擎执行时,GUI线程会被挂起,GUI更新会被保留在一个队列中期待引擎线程闲暇时立刻被执行。· 当浏览器在执行JS程序的时候,GUI渲染线程会被保留在一个队列中,直到JS程序执行实现后才会立刻被执行。如果JS执行的工夫过长,这会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。· 如果JS文件中没有操作DOM相干的代码,就能够将JS脚本设置为异步加载,通过async或defer来进行标记代码。