任何人都可以告诉我,在javascript中,array.forEach比循环慢的原因是什么。有什么特别的原因。
这是我试图找到性能的代码。
// Populate the base array
var arr = [];
for (var i = 0; i < 1000; i++) {
arr[i] = i;
}
function someFn(i) {
return i * 3 * 8;
}
使用Array.forEach:
arr.forEach(function (item){
someFn(item);
})
使用for循环:
for (var i = 0, len = arr.length; i < len; i++) {
someFn(arr[i]);
}
正如您所看到的,Array.ForEach比for循环慢96%。 提前致谢。
答案 0 :(得分:8)
粗略地说,这就是两种情况下发生的情况:
每次迭代发生的唯一开销是检查&amp;增量,这是非常低负荷的操作。
功能设置的开销&amp;拆除步骤3&amp;这里的5比增量和增量大得多。检查vanilla for-loop的整数。
也就是说,许多现代浏览器认识到&amp;优化forEach调用,in some cases,forEach甚至可能更快!