在执行for循环之前声明具有另一个变量长度的变量是否更有效,或者是否应该在循环内计算长度。
我确定答案取决于数组的大小,计算长度。我只是总是看
for ( var i = 1; i <= theVar.length; i++ ) {
}
但后来我被告知这样做资源不足
var theVarLen = theVar.length
for ( var i = 1; i <= theVarLen; i++ ) {
}
因为它避免了每次迭代重新计算长度。
或者它是否依赖于具体情况而无法做出明确的法令?
或者,它真的不重要吗??
非常感谢!
答案 0 :(得分:3)
好吧,让我们来看看。我在这里创建了一个可以运行的测试:http://jsperf.com/loop-length-caching
一旦创建(并且可能修改)数组,浏览器似乎存储了数组的长度,因此将长度存储在变量中没有巨大的速度优势。唯一真实的因素(在这种情况下)是访问对象属性和访问变量之间的速度差异。
答案 1 :(得分:0)
可以说,它是内部解除引用的一个指针,但我从来没有,曾经看到它在实际代码中以第二种方式完成。我相信你可能很难证明你可能获得的任何表现。