1. 程式人生 > >JavaScript中遍歷數組,最好不要用for...in

JavaScript中遍歷數組,最好不要用for...in

標準 .com key javascrip 是我 ring 表示 技術分享 就是

先看一段代碼

var arr = [2,3,4,5];
    for(var i = 0; i < arr.length; i++){
        console.log(i,"類型:"+typeof i,arr[i]);
    }

   for(var j in arr){
       console.log(j,"類型:"+typeof j,arr[j]);
   }

 結果

技術分享圖片

標準的for循環中的i是number類型,表示的是數組的下標,但是foreach循環中的i表示的是數組的key是string類型。
但是: 如果我們在上面的代碼的基礎上為Array做了擴充,只是添加了函數,看下下面的結果會是怎樣
    var arr = [2,3,4,5];
    Array.prototype.remove = function(val) {
	console.log("在數組中添加的刪除方法!");
	}
    };
    for(var i = 0; i < arr.length; i++){
        console.log(i,"類型:"+typeof i,arr[i]);
    }

   for(var j in arr){
       console.log(j,"類型:"+typeof j,arr[j]);
   }

 結果如下:

技術分享圖片

用for...in輸出的結果多出來了一行,多出來的這一行就是我們擴展的函數,不是我們定義在數組中的值

因此我們在遍歷數組的時候,最好不要用for...in

JavaScript中遍歷數組,最好不要用for...in