JavaScript中遍歷數組,最好不要用for...in
阿新 • • 發佈:2018-09-07
標準 .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