学习记录
课程名称
迭代器和生成器
时间
2021.3.16
话题关键词
迭代器、生成器、yield、可中断、仅遍历一次
总结
迭代器是所有编程语言中都可以看到的模式。 ECMAScript 6正式支持迭代模式,并引入了两种新的语言特性。
迭代器和生成器。
迭代器是一个接口,可以在任何对象上实现,它支持连续检索对象生成的所有值。 实现iterable接口的对象具有Symbol.iterator属性,该属性引用默认的小程序。 迭代器就像一个迭代器工厂,也就是函数,调用时会生成实现迭代器接口的对象。
迭代器必须在连续调用next()方法上连续获取值。 此方法向名为IteratorObject .的对象返回done和value属性。 前者是布尔值,指示是否可以访问更多的值。 后者包含迭代器返回的当前值。 该接口可以通过手动重复调用next (方法)来使用,也可以由本机消费者(如for-of循环)自动使用。
生成器是在调用后返回生成器对象的特殊函数。 生成器对象实现了Iterable界面,因此可以在任何占用可重复对象的地方使用。 生成器的唯一之处是支持可以暂停生成器函数运行的yield关键字。 使用yield关键字,还可以通过next )方法接收输入并生成输出。 如果加上星号,则yield关键字可以将随后的可重复对象序列化为一组值。
:我还不知道发生器和迭代器在实际业务里上的应用场景,所以用深度优先遍历发生器写可以看出它很优雅。