script defer async的区别:
当script中有defer属性时,脚本的加载过程和文档加载是异步发生的,等到文档解析完(DOMContentLoaded事件发生)脚本才开始执行。
当script有async属性时,脚本的加载过程和文档加载也是异步发生的。但脚本下载完成后会停止HTML解析,执行脚本,脚本解析完继续HTML解析。
当script同时有async和defer属性时,执行效果和async一致。
async属性表示应该立即开始下载脚本,但不能阻止其他页面动作,只对外部脚本文件有效。defer属性表示脚本可以延迟到文档完全被解析和显示之后再执行。
defer属性规定当页面已完成加载后,才会执行脚本。async属性一旦脚本可用,则会异步执行。