2

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

我确定答案取决于计算长度的数组有多大。我只是经常看到

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

}

但后来有人告诉我,这样做的资源密集度较低

var theVarLen = theVar.length

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

}

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

或者它是否取决于具体情况以至于无法做出明确的法令?

或者,这根本不重要..?

非常感谢!

4

2 回答 2

4

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

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

于 2012-08-06T00:06:32.547 回答
1

可以说,它少了一个指向内部取消引用的指针,但我从未见过它在实际代码中以第二种方式完成。我相信人们很难证明你可能获得的任何表现是合理的。

于 2012-08-06T00:03:33.050 回答