### 延迟脚本 defer="defer"
这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会延迟至整个页面都解析完毕后再运行。因此,在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延迟到遇到</html>标签的时候执行。
HTML5规范要求脚本按照他们出现的顺序执行,因此第一个脚本会先于第二个脚本执行,而这两个脚本会先于DOMContentLoaded事件执行。然而,在现实中,演示脚本不一定是按照这个顺序执行,也不一定在DOMContentLoad事件前执行。因此,最好只有一个延迟脚本。
### 异步脚本 async="async"
这个属性作用与defer属性类似,但是不能不保证异步脚本执行顺序。异步脚本一定在页面的load事件前执行,但可能会在DOMContentLoad事件前或后执行。