script async 和script defer的区别

时间:2024-01-05 16:43:44

浏览器对js文件的操作主要有两部分:下载和执行;

js文件下载在有些浏览器中是并行的,在有些浏览器中是串行的,如:IE8、firefox3、chrome2都是串行下载的;

执行在所有浏览器中默认是阻塞的,当js在执行时不会进行html解析和其他操作,所以,页面顶部的js不宜过大,过大会导致页面长时间处于空白状态,对于外链的js文件,async和defer属性可以减少对页面加载的影响

async表示js是否异步执行,当有这个属性时则不阻塞当前页面的加载,并在js下载完后立刻执行,但是不能保证多个script标签的执行顺序

defer表示js是否延迟执行,当有这个属性时js的执行会推迟到页面解析完成之后,可以保证多个script标签的执行顺序,需要注意的是这两个属性目前对于内嵌的js是无效的而对于dom中创建的script标签在浏览器中则是异步的

如果async为true,那么脚本在下载完成后异步执行

如果async为false,defer为true,那么脚本会在页面解析完毕之后执行

如果async和defer都为false,那么脚本会在页面解析中,停止页面解析,立刻下载并且执行

注:本文来自摘抄

相关文章