為什麼使用“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 語句的目的是列舉物件屬性。此語句將向上進入原型鏈,還會列舉繼承的屬性,而這種行為有時並不可取。
廣告