JavaScript文件引入顺序是否会影响脚本实际执行速度?
JavaScript文件引入顺序对脚本运行速度的影响
首先明确你示例中使用的是无任何特殊属性的普通脚本标签,引入写法如下:
<script src="jsfile1.js"></script> <script src="jsfile2.js"></script> <script src="jsfile3.js"></script> <script src="jsfile4.js"></script> <script src="jsfile5.js"></script>
针对这类标签,浏览器默认会遵循「按引入顺序阻塞HTML解析、下载完一个就立刻执行一个」的规则,不存在“等所有JS文件全部解析完成后再统一提升所有声明”的机制,对速度的影响要分两个维度判断:
- 对逻辑启动时机的影响:函数放在靠前的文件里会更早完成注册,可以更早触发执行
你提到的测试函数代码如下:
普通脚本不会等所有文件加载完成再统一处理,jsfile1作为第一个被处理的文件,里面的函数声明会在第一个文件执行阶段就注册到对应作用域,不需要等后面4个文件下载、执行完成。如果你在jsfile1末尾就直接调用这个函数发起请求、渲染页面,逻辑启动时间会比把函数放在jsfile5再调用早很多——时间差值基本等于后面4个JS文件的下载+执行总耗时,实际页面体感速度会明显更快。function retrieve_ajax_data_then_render_page(){ //some functions } - 对函数本身运行效率的影响:所有脚本全部加载完成后,同逻辑函数的运行速度无差异
等5个JS文件全部下载、解析、执行完毕后,不管你把这个函数写在哪个文件里,只要函数代码逻辑完全一致、作用域访问规则没有变化,函数被调用时的实际执行耗时没有可感知的差别,浏览器不会给排在前面的文件里的函数分配更高的运行优先级。
补充说明
如果你给script标签添加了async或defer属性,脚本的下载执行顺序会发生变化,但核心逻辑不变:引入顺序只会影响函数什么时候能被注册、什么时候可以开始调用,不会改变函数加载完成后的单次执行效率。
内容的提问来源于stack exchange,提问作者Kolektador
相关产品推荐
相关产品推荐

