for in和for of的區別

2021-10-25 17:25:25 字數 885 閱讀 5234

今天終於弄懂了!

(1)for…in只能遍歷物件本身的所有可列舉屬性,以及物件從其建構函式原型中繼承的屬性

(2)for…in迴圈,只能獲得物件的鍵名,不能直接獲取鍵值

(3)遍歷順序有可能不是按照實際陣列的內部順序

(4)for in更適合遍歷物件

object.prototype.shuxing=

'person'

;var obj=

for(

let n in obj)

也可以遍歷陣列

var arr=[1

,2,3

,4];

for(

let n in arr)

for(

let n in arr)

(1)for…of迴圈內部呼叫的是資料結構的symbol.iterator方法,所以擁有symbol.iterator介面的才可以使用for…of。

(2)for…of迴圈可以使用的範圍包括陣列、set 和 map 結構、某些類似陣列的物件(比如arguments物件、dom nodelist 物件)、後文的 generator 物件,以及字串,不能遍歷物件。

(3)陣列的遍歷器介面只返回具有數字索引的屬性。

(4)可以與break、continue和return配合使用

var arr=[1

,2,3

,4];

arr.foo=

'lxt'

;for

(let n of arr)

for(

let n in arr)

for of 和 for in 的區別

var obj for var key of obj 出錯 uncaught typeerror obj is not iterablevar obj for var key in obj 結果是 a b cvar arr 3 5,7 for var i in arr 結果是 0 1 2var ar...

for in 和for of的區別

es5的話也可以使用foreach,es5具有遍歷陣列功能的還有map filter some every reduce reduceright等,只不過他們的返回結果不一樣。但是使用foreach遍歷陣列的話,使用break不能中斷迴圈,使用return也不能返回到外層函式。array.proto...

for in 和for of 的區別

最近在學習es6的知識,看到了for of 這新的迴圈方法,所以就測試一下和以前for in有什麼不同,一下是一些不同地方,當然還有其他不同的,暫時還沒有發現 for in迴圈由於歷史遺留問題,它遍歷的實際上是物件的屬性名稱。乙個array陣列實際上也是乙個物件,它的每個元素的索引被視為乙個屬性。當...