HTML5给<script>元素定义了async属性——异步加载和defer属性——延时加载,用于改变处理脚本的行为,只适用于外部脚本文件。
正常的同步加载会阻塞文档加载即遇到js文件要实时进行下载并执行,如放在head里,则这时body文档不加载,js下载并执行后才可加载(此时页面为空),使用defer和async则使文档非阻塞加载;
defer为延时加载,遇到js文件要开通新的通道,下载文件并在</body>全部结束后执行;
aysnc为异步加载,遇到js文件开通新的通道,此时body进行加载,但当js文件下载完成后,要进行js文件的执行,此时文档加载暂停,js文件执行后,文档继续加载。