我一直无法找到答案,例如你有阵列:
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
吗?
答案 0 :(得分:3)
确实如此!我喜欢这个解决方案
for(var i=0, len=myArray.length; i<len; i++){
console.log(myArray[i]);
}
它比你粘贴的那个更干净。
答案 1 :(得分:0)
是的,但如果这个循环执行了数百万次,那么它只会有明显的性能提升。但是,如果不是.length
,那么这个值是一个复杂的计算,通过一切手段,特别是如果它将运行数百万次。
例如,如果你循环到length
,比如20次幂,那么你不应该每次迭代都这样做。