js中for of 和for in區別?

2021-10-14 00:13:58 字數 1189 閱讀 3507

先說結論:

1. 推薦在迴圈物件屬性的時候,使用for

...in

,在遍歷陣列的時候的時候使用for

...of。

2.for

...in迴圈出的是key,for

...of迴圈出的是value

3. 注意,for

...of是es6新引入的特性。修復了es5引入的for

...in的不足

4.for

...of不能迴圈普通的物件,需要通過和object.

keys

()搭配使用

假設我們要遍歷乙個陣列的valuelet aarray =

['a'

,123,]

使用for

...in迴圈:

for(

let index in aarray)`)

;}使用for

...of迴圈:

for(

var value of aarray)

咋一看好像好像只是寫法不一樣而已,那為什麼說for

...of修復了for

...in的缺陷和不足。

假設我們往陣列新增乙個屬性name:

aarray.name =

'demo'

,再分別檢視上面寫的兩個迴圈:

for(

let index in aarray)`)

;//notice!!aarray.name也被迴圈出來了

}for

(var value of aarray)

所以說,作用於陣列的for

-in迴圈除了遍歷陣列元素以外,還會遍歷自定義屬性。

for...

of迴圈不會迴圈物件的key,只會迴圈出陣列的value,因此for

...of不能迴圈遍歷普通物件,對普通物件的屬性遍歷推薦使用for

...in

如果實在想用for

...of來遍歷普通物件的屬性的話,可以通過和object.

keys

()搭配使用,先獲取物件的所有key的陣列

然後遍歷:

var student=

}for

(var key of object.

keys

(student)

)

Js中for in 和for of的區別

for in的使用array.prototype.sayhello function array.prototype.str 我是陣列原型的字串 定義乙個陣列 var arr 1 2,3 4 console.log arr 當前列印的沒有原型上的屬性和方法 1,2,3,4 使用for in迴圈 fo...

js中的for in 和 for of 的區別

for.in和for.of的區別 for.in是es5的標準,該方法遍歷的是物件的屬性名稱 key 鍵名 乙個array物件也是乙個物件,陣列中的每個元素的索引被視為屬性名稱,所以在使用for.in遍歷array時,拿到的是每個元素索引 一般用於遍歷物件自身的和繼承的可列舉屬性。以及物件從建構函式原...

for in 和 for of 的對比

fon in和for of最大的區別就是 乙個是對鍵名key的遍歷,乙個是對鍵值value的遍歷 使用for in也能遍歷陣列,但會存在一些問題 index索引為字串型數字,不能直接進行幾何運算 和遍歷順序物件的行為一樣,使用for in會遍歷陣列所有可列舉的屬性,所以原型物件上的方法和屬性也會被遍...