forEach会把数组中的顺序丢掉
for in循环出的值不一定是按顺序的,设计之初,是给普通以字符串的值为key的对象使用的。
for of 和 for可以保证遍历顺序
哪些数据结构部署了 Symbol.iteratoer属性了呢?
只要有 iterator 接口的数据结构,都可以使用 for of循环。
数组 Array
Map
Set
String
arguments对象
Nodelist对象, 就是获取的dom列表集合
-以上这些都可以直接使用 for of 循环。 凡是部署了 iterator 接口的数据结构也都可以使用数组的 扩展运算符(…)、和解构赋值等操作。
我也想让对象可以使用 for of循环怎么办?使用 Object.keys() 获取对象的 key值集合后,再使用 for of
以例1为例
const obj = {
a: 1,
b: 2,
c: 3
}
for (let i of Object.keys(obj)) {
console.log(i)
// 1
// 2
// 3
}
也可以给一个对象部署 Symbol.iterator属性。