<script>标签里的defer和async属性 区别(待补充)

  • defer与async的区别(表格显示):
区别 defer async
什么时候执行 document 解析完毕且所有defer-script 加载完成后执行,然后触发 DOMContentLoaded 事件 下载完就执行;在 DOMContentLoaded 之前或之后执行,但一定在 load 之前执行
加载顺序 按顺序加载 加载顺序不确定
是否阻塞 与html解析并行,不阻塞html的解析,html解析完成后执行 会阻塞 load 事件
对于script标签里代码都无效,对src引入外部js文件有效
向 document 动态添加 script 标签时,async 属性默认是 true
  • defer与async的区别是:
    前者要等到整个页面正常渲染结束,才会执行;后者一旦下载完,渲染引擎就会中断渲染,执行这个脚本以后,再继续渲染。
    一句话,defer是“渲染完再执行”,async是“下载完就执行”。
    另外,如果有多个defer脚本,会按照它们在页面出现的顺序加载,而多个async脚本是不能保证加载顺序的。

posted on 2017-09-21 17:01  cag2050  阅读(168)  评论(0编辑  收藏  举报

导航