script标签的两个属性:async和defer
1.async:js代文件与页面dom元素,cssom元素的加载并行执行
2.defer:js文件在页面元素构建加载完成后在执行
script放在底部的原理:
script没有script和defer时,js文件下载完后会立即执行,这种情况下,script放在顶部会阻塞页面呈现,在网速慢的情况下会导致“白屏”,直到脚本下载完毕才继续呈现页面。因此,script放在底部可以让页面尽快呈现。
script全部放在head中会出现的问题:
在需要操作body中的某元素时,可能找不到该元素,因此,若要放在head中,一般需要绑定一个监听windows.onload=function(){ ... },当文档全部解析完之后再执行script代码。