本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
在我们开发的过程中js部分我们可以分为:内部和外部。内部的js也叫本页面的js脚本,通常会被放到body内;而外部的js一般放到<head> </head>内。
而在我们浏览器渲染页面的时候是由上至下依次执行,CSS执行加载时,程序仍然往下执行(并且CSS 应当写在 head 中,以避免页面元素由于样式缺失造成瞬间的白页或者给用户闪烁感),而执行到script脚本则是中断线程,立刻请求读取内容,执行代码,所以可能存在页面元素还没有构造的可能性,待该script脚本执行结束之后程序才继续往下执行,阻塞进程。
同时如果你的js需要访问DOM元素,此时因为还没有生成DOM,所以在body之前的访问dom元素的js会出错,或者无效。
案例:script在body之前
<script>
var a=document.querySelector("input");
a.onclick=function(){
alert('111');
}
</script>
</head>
<body>
<input type="button" value="点餐">
</body>
此时,动态库无法弹出,因为body中DOM元素并未生成,而当我们把script标签放置在body之后,页面将会正常运行。
当然如果你把某些可以进行预装载的脚本内容提前引入的,则可以大大提高执行效率,在普通的页面中这个区别并不明显,当运行很大很复杂的程序时,二者的速度将出现明显的差别。
所以:页面效果实现类的js应该放在body之前,动作,交互,事件驱动,需要访问dom属性的js可以放在body之后”。