defer
- 表明脚本在执行时不会影响页面的构造,脚本会延迟到整个页面都解析完毕后再运行(浏览器遇到</html>标签在执行)
- H5规范要求脚本按照他们出现的先后顺序执行
- 会先于DOMContentLoaded事件执行
- 只适用于外部脚本
- 支持Html5的实现会忽略给嵌入脚本设置的defer属性
- IE4-7支持,以后不支持
async
- 浏览器立即下载文件
- 并不保证按照他们出现的先后顺序执行
- 目的是不让页面等待两个脚本下载和执行,从而异步加载页面的其他内容
- 异步脚本不要在加载期间修改DOM
- 一定会在页面的load事件前执行,但可能在DOMContentLoaded事件触发之前或者之后执行
- 只适用于外部脚本