2014-12-23 37 views
0

什麼計算操作更快?「(key in obj)」還是「.forEach」更快?

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

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

http://jsperf.com/ - 找出:D – tymeJV

+2

http://jsperf.com/diy-1234'for..in',顯然。不涉及函數調用。 –

+0

這兩者並不相同,但顯然首先是做更多的工作。爲什麼?你的代碼中有性能問題嗎? –

回答

0

的主要區別是基於什麼是你正在工作的陣列結構。 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函數將「遍歷所有」。所以,正如我所提到的,這取決於可迭代的結構。