HTML-面试-script的defer与async
2026年10月16日·Admin·2 次浏览
面试题:<script> 放哪?defer 和 async 区别?
默认(无属性)
阻塞 HTML 解析,下载并执行完才继续解析 → 易拖慢首屏。
defer
- 并行下载,不阻塞解析。
- 在文档解析完成后、DOMContentLoaded 前按出现顺序执行。
- 仅对外部脚本有意义;多个 defer 保序。
- 适合依赖 DOM 的业务脚本。
async
- 并行下载,下载完尽快执行(可能打断解析),顺序不保证。
- 适合独立脚本(统计、广告),不依赖 DOM 顺序。
实践
- 关键脚本:
defer或放</body>前(仍建议 defer/module)。 type="module"默认 defer 行为类似(可再查规范细节)。