【Js】defer和async的区别

  1. 如果没有defer和async,会阻塞dom树构建,立即加载并执行脚本
    • 造成阻塞的原因:因为加载的js可能会对dom做增删查改等操作,这些操作会对dom树产生影响,如果不阻塞,等浏览器解析完标签生成dom树后,js修改了某些节点,那么浏览器又得重新解析,然后生成dom树,性能就会比较差
  2. 如果script带有async属性,不会阻塞dom树构建,立即异步加载,加载好后立即执行
  3. 如果script带有defer属性,不会阻塞dom树构建,立即异步加载。加载好后,如果dom树还没构建好,则先等dom树解析好再执行;如果dom树已经准备好,则立即执行

 

微信公众号“前端那些事儿”

【Js】defer和async的区别