先說結論:
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會遍歷陣列所有可列舉的屬性,所以原型物件上的方法和屬性也會被遍...