本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/06/07/script%E5%85%83%E7%B4%A0%E7%9A%84async%E7%89%B9%E6%80%A7%E5%92%8Cdefer%E7%89%B9%E6%80%A7/
摘要
本文主要讲述了:
- async
- defer
- 总结
正文
默认情况下,浏览器遇到<script>
元素就会马上同步加载脚本,在脚本加载期间,文档解析会被阻塞。
async
布尔特性
此特性不得用于src
特性缺失的<script>
(例如:内联式脚本)。
作用
- 异步加载脚本
- 脚本加载完成之后立即执行
注意:
- 由于是异步加载,因此在脚本加载期间,文档解析不会被阻塞。
- 由于脚本加载完成之后立即执行,因此多个
async
之间的执行顺序是不可预测的
defer
布尔特性
此特性不得用于src
特性缺失的<script>
(例如:内联式脚本)。
作用
- 异步加载脚本
- 在
DOMContentLoaded
事件触发之前执行
注意:
- 由于是异步加载,因此在脚本加载期间,文档解析不会被阻塞。
- 不同于
async
,脚本会按照文档中的顺序依次执行
总结
async
和defer
的区别在于脚本执行时间和执行顺序- 不管是
async
还是defer
,在脚本执行期间,文档解析仍会被阻塞