3

我一直无法找到这个问题的答案,例如你有数组:

var myArray = ["a","b","c","d","e","f","g"]; // pretend I define up to 1000 elements

遍历数组的一种简单方法是:

for(var i=0; i<myArray.length; i++){
    console.log(myArray[i]);
}

我想弄清楚的是,如果每次迭代都会评估 .length 属性,那么如果我使用:

my len = myArray.length;
for(var i=0; i<len i++){
    console.log(myArray[i]);
}

第二种方法是否会提高性能?JS引擎是否会length在每次迭代时计算?

4

2 回答 2

3

It does! I like this solution

for(var i=0, len=myArray.length; i<len; i++){
    console.log(myArray[i]);
}

It's just a little cleaner than the one you pasted.

于 2013-06-27T14:32:04.097 回答
0

是的,但是如果这个循环被执行数百万次,它只会显着提高性能。但是,如果不是.length,该值是一个复杂的计算,那么无论如何都要这样做,特别是如果它将运行数百万次。

例如,如果您要循环到length20 次方,那么您不应该在每次迭代时都这样做。

于 2013-06-27T14:30:22.883 回答