什么工作得更快" for(key in obj)"或" .forEach"?

时间:2014-12-23 13:48:06

标签: javascript

什么计算操作更快?

Object.keys(obj).forEach(function (key) {
   // do something with obj[key]
});

for(key in obj){
    // The key is key
    // The value is obj[key]
}

2 个答案:

答案 0 :(得分:0)

jsperf上有一个现有的测试用例。

http://jsperf.com/angularjs-foreach-vs-native-foreach/31

答案 1 :(得分:0)

主要区别在于您正在处理的Array结构。 for(key in obj)遍历对象的可枚举属性,对Sparse Arrays特别有用。

例如,

var keyInArr;
var arr = [];
arr[0] = "val1";
arr[10] = "val2";
arr[100] = "val3";
for (keyInArr in arr) {

}

对于上面的数组,我们只迭代3次,而不是101次。

相反,forEach功能将全部循环播放这些功能'。所以,正如我所提到的,它取决于可迭代的结构。