将长度设置为变量或计算循环语句中的长度

时间:2012-08-06 00:00:48

标签: javascript

在执行for循环之前声明具有另一个变量长度的变量是否更有效,或者是否应该在循环内计算长度。

我确定答案取决于数组的大小,计算长度。我只是总是

for ( var i = 1; i <= theVar.length; i++ ) {

}

但后来我被告知这样做资源不足

var theVarLen = theVar.length

for ( var i = 1; i <= theVarLen; i++ ) {

}

因为它避免了每次迭代重新计算长度。

或者它是否依赖于具体情况而无法做出明确的法令?

或者,它真的不重要吗??

非常感谢!

2 个答案:

答案 0 :(得分:3)

好吧,让我们来看看。我在这里创建了一个可以运行的测试:http://jsperf.com/loop-length-caching

一旦创建(并且可能修改)数组,浏览器似乎存储了数组的长度,因此将长度存储在变量中没有巨大的速度优势。唯一真实的因素(在这种情况下)是访问对象属性和访问变量之间的速度差异。

答案 1 :(得分:0)

可以说,它是内部解除引用的一个指针,但我从来没有,曾经看到它在实际代码中以第二种方式完成。我相信你可能很难证明你可能获得的任何表现。