资讯专栏INFORMATION COLUMN

javaScript标签的defer和async

Barry_Ng / 3168人阅读

摘要:如果遇到多个带的标签,那么他们的执行顺序是无法保证的。就像上面的代码,无法保证一定会在前面执行。但是这两个脚本都会先于事件执行。

在HTML里面使用javaScript有两种方式:

1: 通过

以上的一段代码,如果是放在里面,那么页面的解析(页面的解析是遇到开始)就要等这两段script执行完了才会开始,并且规定那个先出现就先执行哪个,所以以上代码会先执行alert("hello"),再执行alert("javaScript")

如果上面的代码是放在body里面, 那上面代码的存在则会直接导致页面的解析,要等这段js代码执行完了,再继续页面解析的工作。

3:通过

以上的情况浏览器会按照文件出现的先后顺序去下载和执行代码,意思就是b.js会在a.js执行完之后再执行。
如果上述代码是放在body里面,那么它也是阻塞的,如果用图表示的话就是:

**2:通过

遇到带有async属性的

从这个图对比上面的第2种情况,可以看出,在下载js文件的时候,页面的解析依然是在执行的,只是下载完之后js的执行会阻塞页面的解析。
如果遇到多个带async的

先来看一下defer的图像表示:

defer只在

阅读需要支付1元查看
<