為什麼使用“for…in”進行陣列迭代在javascript中是個壞主意?


在 JavaScript 中將 for..in 迴圈與陣列迭代一起使用是個壞主意,因為有如下行為 −

使用方法常規迭代迴圈

示例

let arr = []
arr[4] = 5
for (let i = 0; i < arr.length; i ++) {
   console.log(arr[i])
}

輸出

undefined
undefined
undefined
undefined
5

如果我們使用 for in 結構對這個陣列進行迭代,我們會得到 −

示例

let arr = []
arr[4] = 5
for (let i in arr) {
   console.log(arr[i])
}

輸出

5

請注意,陣列的長度是 5,但它仍然只在一個數組值上進行迭代。

出現這種情況是因為 for-in 語句的目的是列舉物件屬性。此語句將向上進入原型鏈,還會列舉繼承的屬性,而這種行為有時並不可取。

更新於: 2019-09-19

99 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告