HTML 与 CSS · 单选题 · 第 7 题
前端与全栈开发面试 · 第 7 题
关于 script 标签的 defer 和 async 属性,下列说法正确的是?
- Aasync 脚本在 HTML 解析完后按文档顺序执行;defer 脚本下载完就立即执行
- B带 defer 或 async 的脚本在下载期间都会阻塞 HTML 解析,两者只是执行的时机不同
- Casync 脚本一定在 DOMContentLoaded 事件之前执行,并且保持各脚本之间的顺序
- Ddefer 脚本在 HTML 解析完后按文档顺序执行;async 脚本下载完就执行,顺序不保证
答案
D D. defer 脚本在 HTML 解析完后按文档顺序执行;async 脚本下载完就执行,顺序不保证
解析
两者都是并行下载、不阻塞解析。defer 在解析完成后、DOMContentLoaded 之前依次执行,适合有依赖关系或需要操作 DOM 的脚本;async 下载完立即执行,可能在 DOMContentLoaded 之前或之后,适合统计这类独立脚本。type=module 的脚本默认就是 defer 行为。