传统的做法,所有的script元素都应该放在页面的head元素中,这样做的目的是吧所有的外部文件的引用都放在相同的地方。
意味着页面必须等到全部的引用文件都下载执行完成以后,才能开始呈现内容(浏览器在遇到body标签才开始呈现内容),这时候页面就会出现明显的延迟,浏览器一片空白
现代的做法是会吧JavaScript引用放在body元素后面
而延迟脚本和异步脚本就是HTML为<script>标签定义的属性,用于改变处理脚本的行为。
延迟脚本-defer属性:
表明脚本在执行时不会影响页面的构造,也就是说,脚本会被延迟到整个页面都解析完毕后再运行。用于告诉浏览器,立即下载,但延迟执行。
注:HTML5规范要求脚本按照它们出现的先后顺序执行
异步脚本-async属性:
标记为async属性的脚本并不保证按照它们的先后顺序执行
注:在现实当中,延迟和异步脚本最好都放在body标签里面内容的后面。