1. 程式人生 > >for迴圈效率對比

for迴圈效率對比

三種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 語句迭代的是自定義的屬性而不是陣列的元素。