for迴圈效率對比
阿新 • • 發佈:2019-01-10
三種for迴圈
1.【普通】for迴圈
for(var i = 0;i < arr.length;i++){
console.log(arr[i]);
}
2.【加強版】for迴圈
for(var i = 0,len = arr.length;i < len;i++){
console.log(arr[i]);
}
3.【for-in迴圈】
fir(var i in arr){
console.log(arr[i]);
}
時間對比
通過以下程式碼來計算三個迴圈的執行時間
function test1(){
var arr = new Array(1000000);
var date1 = new Date();
for(var i =0;i<arr.length;i++){
arr[i]=0;
}
var date2 = new Date();
for(var i =0,j=arr.length;i<j;i++){
arr[i]=1;
}
var date3 = new Date();
for(var i in arr){
arr[i]=2;
}
var date4 = new Date();
var for1_time = (date2 - date1);
var for2_time = (date3 - date2);
var for3_time = (date4 - date3);
console.log(for1_time); //Firefox:10 Chrome:34
console.log(for2_time); //Firefox:4 Chrome:5
console.log(for3_time); //Firefox:750 Chrome:516
}
test1();
結論
1.三者迴圈的時間關係
加強for迴圈 < 普通for迴圈<for-in
迴圈
2.分析:
2.1.加強for迴圈之所以執行時間最短是因為,它相對於普通for迴圈,少了每一次迴圈都需要的方法解析(arr.length)
2.2雖然用for…in來迭代Array元素很看起來很方便,但是它返回的除了數字索引外還有可能是你自定義的屬性名字。因此還是用帶有數字索引的傳統的for 迴圈來迭代一個數組比較好。因為如果你想改變陣列物件,比如新增屬性或者方法,for…in 語句迭代的是自定義的屬性而不是陣列的元素。