在for循环的每一次迭代中都会计算.length属性
Does the .length property gets evaluated on every iteration of a for loop?
我一直找不到这个问题的答案,比如说你有一个数组:
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
?
确实如此!我喜欢这个解决方案
for(var i=0, len=myArray.length; i<len; i++){
console.log(myArray[i]);
}
它只是比你贴的那个干净一点。
是的,但只有当这个循环执行数百万次时,性能才会显著提高。然而,如果该值不是.length
,而是一个复杂的计算,那么无论如何都要这样做,尤其是如果它将运行数百万次。
例如,如果循环到length
的20次方,则不应该每次迭代都这样做。
相关文章:
- 如何在javascript中迭代数字列表
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何迭代Array.prototype函数
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在ejs-partial中对JSON对象进行迭代
- 如何在DataTables 2.1中迭代对象数组
- 使用递归属性迭代保留属性结构
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 主干-从模板中迭代的集合中获取特定的模型
- 角度.js. 如何计算满足自定义过滤器的 ng 重复迭代
- 为..in - 被迭代的对象在进入循环之前是否只计算一次
- 在数组对象上迭代并计算平均值
- AngularJS:计算ng重复的迭代次数
- 在for循环的每一次迭代中都会计算.length属性
- 我如何使用Javascript迭代以下内容来计算团队的数量
- 计算两个日期之间的月数,每个月迭代一个函数
- 如果在ng中重复AngularJS,则在满足ng后只计算迭代次数并显示计数一次
- 画布游戏-存储/计算位置/迭代粒子/项目符号/游戏元素的最有效方法
- jQuery.each是否在每次迭代中计算集合表达式