白狗子的博客

「天上浮云如白衣,斯须改变如苍狗。」——杜甫

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 行为类似(可再查规范细节)。

© 2025 My Blog. Built with Nuxt.js v4