script元素的async特性和defer特性


本文作者: 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/

摘要

本文主要讲述了:

  1. async
  2. defer
  3. 总结

正文

默认情况下,浏览器遇到<script>元素就会马上同步加载脚本,在脚本加载期间,文档解析会被阻塞。

async

布尔特性

此特性不得用于src特性缺失的<script>(例如:内联式脚本)。

作用

  • 异步加载脚本
  • 脚本加载完成之后立即执行

注意:

  • 由于是异步加载,因此在脚本加载期间,文档解析不会被阻塞。
  • 由于脚本加载完成之后立即执行,因此多个async之间的执行顺序是不可预测的

defer

布尔特性

此特性不得用于src特性缺失的<script>(例如:内联式脚本)。

作用

  • 异步加载脚本
  • DOMContentLoaded事件触发之前执行

注意:

  • 由于是异步加载,因此在脚本加载期间,文档解析不会被阻塞。
  • 不同于async,脚本会按照文档中的顺序依次执行

总结

  • asyncdefer的区别在于脚本执行时间和执行顺序
  • 不管是async还是defer,在脚本执行期间,文档解析仍会被阻塞

参考资料

本文作者: 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/


本文对你有帮助?请支持我


支付宝
微信