Iterator
是一种新的遍历机制,特点
1.迭代器是一个接口,能快捷的访问数据,通过Symbol.iterator来创建迭代器 通过迭代器的next()获取迭代之后的结果
2.对象包含了 value 和 done 两个属性, value 是当前属性的值, done 用于判断是否遍历结束(当 done 为 true 时则遍历结束)
3.迭代器是用于遍历数据结构的指针(数据库的游标)
栗子
const items = ["zero", "one", "two"]; const it = items[Symbol.iterator](); it.next(); >{value: "zero", done: false} it.next(); >{value: "one", done: false} it.next(); >{value: "two", done: false} it.next(); >{value: undefined, done: true}
可迭代的数据结构
- Array
- String
- Map
- Set
- Dom元素(正在进行中)
for...of循环
of 操作数必须是可迭代,这意味着如果是普通对象则无法进行迭代。如果数据结构类似于数组的形式,则可以借助 Array.from() 方法进行转换迭代。
for (let item of arrayLink) { console.log(item); // 报 TypeError 异常 } for (let item of Array.from(arrayLink)) { console.log(item); } // zero // one
let 、const 和 var 用于 for..of
如果使用 let 和 const ,每次迭代将会创建一个新的存储空间,这可以保证作用域在迭代的内部。