首页 > 解决方案 > 在for循环的for语句之外声明“i”变量会加快循环的执行,这是什么原因呢?

问题描述

我认为在 for 语句中声明变量 i 将只执行一次,并且在下一次迭代中, i 变量将递增 1 并与 arr.length 进行比较,而不管 for 语句中的第一个参数,我的意思是,这样我们在(for 语句)之外进行声明以便不通过循环执行此操作,请注意,此步骤将在每次迭代时被循环忽略,因此,这种行为如何能够加快 for 循环的执行?

var i;
var l = arr.length;
for (i = 0; i < l; i++) {

标签: javascriptperformancefor-loop

解决方案


由于JS中的变量提升i,在循环外声明var不会影响性能。

但是,与 相比,将数组长度归因​​于变量l确实会提高性能,for (i = 0; i < arr.length; i++) {因为不需要在length每个循环轮次中访问该属性。

请注意,您也可以使用此语法,因为声明的第一部分for只执行一次:for (var i = 0, l = arr.length; i < l; i++) {

另外,我个人更喜欢在循环之外声明它,因为不太了解 JS 的人可能会认为它的var作用域是for循环,但事实并非如此(与 相比let)。另见CertainPerformance 的评论。


推荐阅读