什么是Iterable
Iterable是ES2015新增的一个Interface。Array,String都是Iterable。接受Iterable的原生语言特性包括:
- for-of 循环
- 数组解构(
[...arr]
) - Array.from()
- 创建Set
- 创建Map
Promise.all()
Promise.race()
yield*
Iterable具有Symbol.iterator
属性,该属性是一个函数,返回一个新的Iterator:
Iterator是一个具有next方法的对象,该对象返回IteratorResult
IteratorResult具有两个属性:done和value。done是个布尔值,当其为false时,说明迭代未结束,我们取用它的value。当它为true时,说明已经结束了,我们对value也不再关心了。