Appearance
defer 和 async
这两个是script
标签独有的两个属性,他们异步的加载脚本资源而不阻塞浏览器对后续代码的解析。
defer:html 解析到 script 标签时会异步加载该脚本,等到 html 解析完成后才执行该脚本代码。在 DOMContentload 事件之前执行,对于 defer 的脚本资源的执行,所有的脚本代码执行完成后触发 DOMContentloaded 之前事件。多个 defer 按照处于文档的顺序来加载。
async:html 解析到 script 标签时会异步加载该脚本,但网络请求加载完成后会立即执行脚本代码,可能会出现浏览器未解析完 html 就执行了脚本代码。
默认:html 解析到该 script 时,会同步加载脚本资源,加载完成后会立即执行脚本代码。注意,这一过程都是同步在进行的,所以会阻塞浏览器解析后续 html 字符串。