一般都把 JS 引入 body 的末尾:

    • 为什么?

    • 放在 HEAD 可不可以?怎么样才能放到 HEAD 中实现放到 BODY 中的效果

    • script 标签中有两个属性:defer / async,这两个属性是做什么的。

    一般情况下浏览器加载页面时,遇到 script 标签,会立即加载并执行,会阻塞页面中其他元素的加载。

    (1)因为执行的时候,可能需要获取页面中的元素,放在 body 后面,可以保证 JS 代码运行时,页面已经渲染完毕。并且不会阻塞页面的加载

    (2)要放在 head 中,需要使用 window.onload 包裹

    (3)async 属性,会让 script 标签进行异步加载,不会阻塞页面其他元素的加载,加载完毕后立即执行
    defer 属性,会让 script 标签进行异步加载,且延迟其执行,在页面所有元素加载完毕后才执行

    把 JS 放到 前面是最佳实践。