1. 程式人生 > >for..of與for..in

for..of與for..in

循環 log defined length define name fin 為什麽 name屬性

var arr=[1,2,3,5]
undefined
for(var m of arr)
    console.log(m)//1,2,3,5

for(var m in arr)
    console.log(m)//0,1,2,3

for...in由於歷史遺留問題,它遍歷的實際上是對象的屬性名稱。一個Array數組也是一個對象,數組中的每個元素的索引被視為屬性名稱,所以我們可以看到使用for...in循環Array數組時,拿到的其實是每個元素的索引。

arr.name=‘abc‘
"abc"
for(var m in arr)
    console.log(m)//0,1,2,3,name

如上所示,當我們為a多手動添加一個屬性name的時候,for...in循環會把name屬性也包括在內,而Array的length屬性卻不包括在內。

for...of循環則不存在上述的問題,它只循環集合本身的元素。這就是為什麽引入for...of循環。

for..of與for..in