一般都把 JS 引入 body 的末尾:
为什么?
放在 HEAD 可不可以?怎么样才能放到 HEAD 中实现放到 BODY 中的效果
script 标签中有两个属性:defer / async,这两个属性是做什么的。
一般情况下浏览器加载页面时,遇到 script 标签,会立即加载并执行,会阻塞页面中其他元素的加载。
(1)因为执行的时候,可能需要获取页面中的元素,放在 body 后面,可以保证 JS 代码运行时,页面已经渲染完毕。并且不会阻塞页面的加载
(2)要放在 head 中,需要使用 window.onload
包裹
(3)async 属性,会让 script 标签进行异步加载,不会阻塞页面其他元素的加载,加载完毕后立即执行
defer 属性,会让 script 标签进行异步加载,且延迟其执行,在页面所有元素加载完毕后才执行
把 JS 放到 前面是最佳实践。