for…of與for…in的差別
總結
- 建議:在迭代物件屬性時,使用
for...in
;在迭代陣列時,使用for...of
。 for...in
輸出的是屬性名稱(key),for...of
輸出的是值(value)for...of
是 ES6 的新語法。修復了ES5 for…in 的不足for...of
不能迭代物件,需要透過和 Object.keys() 搭配使用
範例說明
參考下列三個範例變化與說明,即可了解 for...of
與 for...in
之間的差別
範例1
單純迭代陣列的話,for...in
輸出的是屬性名稱(key),for...of
輸出的是值(value)
1 | let iterable = [3, 5, 7]; |
範例2
再來我們在原本的陣列,新增一個屬性 foo
,可看到 for...in
有將此屬性 foo
也輸出。
1 | let iterable = [3, 5, 7]; |
範例3
再來我們這次在物件和陣列的原型鍊上,分別各新增function,一樣可看到 for...in
也將原型鋉上的function名稱也輸出了。
1 | // 在 原型鍊上 新增function |
由上面三個案例來看,如果只是想單純的迭代取出陣列值的話,建議使用 for...of
會比較好,不過注意此語法為 ES6 新語法。
for..of 迭代 物件(object)
如果想用 for...of
來遍歷物件的屬性的話,可以通過和 Object.keys()
搭配使用,先取得物件的所有key的數組,然後再遍歷。
1 | var student={ |