🚀 <script>、<script async>和<script defer>的区别

📅 发布于 2025年12月 | 👤 作者:博主 | 🏷️ 标签:"<script async>","<script defer>", Web开发, 前端, 面试

欢迎来到我的博客文章!所有文章都是满满的前端干货,文章简明扼要。

总结

<script>、<script async>和<script defer>的区别主要体现在加载行为、执行时机和是否阻塞HTML解析上。

Script标签属性对比表格:

属性 加载行为 执行时机 是否阻塞 HTML
<script> 立即下载 下载完成后立即执行 是(暂停 HTML 解析)
<script async> 异步下载(与 HTML 解析并行) 下载完成后立即执行(可能打断 HTML 解析) 否(下载不阻塞),但执行会阻塞
<script defer> 异步下载(与 HTML 解析并行) 延迟到 HTML 解析完成后、DOMContentLoaded 事件前按顺序执行 否(下载和执行均不阻塞解析)

🌟 关键理解要点:

🌟 最佳实践建议:

          
          <!-- 1. 普通 script:阻塞解析 -->
          <script src="a.js"></script>  <!-- 下载 + 执行 → 阻塞 -->

          <!-- 2. async:不阻塞下载,但可能中途执行 -->
          <script async src="b.js"></script> 
           <!-- 下载与解析并行;b.js 下完立刻执行(可能打断解析) -->

          <!-- 3. defer:完全不阻塞,最后按序执行 -->
          <script defer src="c.js"></script>
          <script defer src="d.js"></script>
          <!-- c.js → d.js 顺序执行,在 DOMContentLoaded 之前 -->
          
        
← 返回首页