1. 程式人生 > >for..in 和 for...of 的區別

for..in 和 for...of 的區別

ttr display ... isp 定義 執行 可叠代對象 ring ole

for...of 是ES6出現的 循環遍歷的是值

語句在可叠代對象(包括 Array, Map, Set, String, TypedArray,arguments 對象等等)上創建一個叠代循環,對每個不同屬性的屬性值,調用一個自定義的有執行語句的叠代掛鉤.
也就是說,for of只可以循環可叠代對象的可叠代屬性,不可叠代屬性在循環中被忽略了。

for..in是 ES5出現的 循環遍歷的是屬性,並且自定義屬性(attribute)也會被遍歷,(補:通常隱式的叫做Property),而且遍歷還不一定按照順序

var arr = [1,2,4,5];

for(let i in arr)

{

console.log(arr[i]);

}

arr.b = 5;

for(let i in arr)

{

console.log(i)

//b也會被打印出來!

}

防止自定義attri被打印出來,可以這麽用:

for(let i in Obj)

{

if(Obj.hasOwnProperty(key)..

)

}

for..in 和 for...of 的區別