HTML 的 script 标签中 defer 和 async 的区别

defer 和 async 都英语控制脚本的加载和执行,都是一部加载外部的 JS 脚本文件,两者都不会阻塞 HTML 的解析。

绿色代表 HTML 解析,蓝色代表 JS 脚本网络加载时间,红色是 JS 脚本执行时间。

defer 会等 DOM 加载完之后才执行,async 则是脚本一直加载完就立即执行。

javascript 复制代码
<script src="lib.js" defer></script>
<script src="main.js" defer></script>

defer 使用场景主要是确保 DOM 完全加载和多个脚本相互依赖的情况,比如确保上述代码中两个脚本按顺序加载。虽然 js 本来就是从上往下执行,但加上 defer 更严谨,可以阻止页面渲染的阻塞、网络延迟、加载时间不同而导致执行顺序的改变。

async 的使用场景,比如想广告内容,不需要等整个页面加载好就跳出来,还有线上考试,网速慢导致试卷还没加载好,但计时器可能就已经开始计时了。

相关推荐
浪裡遊5 小时前
Nivo图表库全面指南:配置与用法详解
前端·javascript·react.js·node.js·php
漂流瓶jz7 小时前
快速定位源码问题:SourceMap的生成/使用/文件格式与历史
前端·javascript·前端工程化
samroom7 小时前
iframe实战:跨域通信与安全隔离
前端·安全
fury_1237 小时前
vue3:数组的.includes方法怎么使用
前端·javascript·vue.js
weixin_405023377 小时前
包资源管理器NPM 使用
前端·npm·node.js
宁&沉沦7 小时前
Cursor 科技感的登录页面提示词
前端·javascript·vue.js
Dragonir7 小时前
React+Three.js 实现 Apple 2025 热成像 logo
前端·javascript·html·three.js·页面特效
peachSoda78 小时前
封装一个不同跳转方式的通用方法(跳转外部链接,跳转其他小程序,跳转半屏小程序)
前端·javascript·微信小程序·小程序
@PHARAOH8 小时前
HOW - 浏览器兼容(含 Safari)
前端·safari