都只能用于外部脚本
defer:
- 告诉浏览器立即下载,但延迟执行。script元素包含的脚本延迟到浏览器遇到</html>标签后再执行。
- HTML5规范要求按照出现的先后顺序执行。
- 会先于DOMContentLoaded事件执行。但在现实当中,延迟脚本并不一定按照顺序执行,也不一定会在DOMContentLoaded事件触发前执行,因此最好只包含一个延迟脚本。
async:
- 告诉浏览器立即下载文件,不保证按先后顺序执行。
- 指定async的目的是不让页面等待脚本下载和执行,从而异步加载其他内容。
- 所以,异步脚本不要在加载期间修改DOM。异步脚本一定会在页面load事件前执行,但可能会在DOMContentLoaded事件触发之前或之后执行。
参考:《JavaScript高级程序设计(第三版)》
网友评论