前端开发中script标签不同位置的区别

835 阅读1分钟

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。


在我们开发的过程中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之后”。