迭代器和生成器
2022-01-10 本文已影响0人
Viewwei
迭代器的意思是按照顺序反复执行一段程序,通常有明确的终止条件
理解迭代
循环是迭代的基础,这是因为每次他可以指定迭代的次数,以及每次迭代要执行的操作.每次循环都会在下一次迭代开始之前完成.
迭代之前需要事先知道如何使用数据结构和遍历顺序并不是数据结构固有的.
可迭代协议
实现 Iterable 接口要求同时具备两种能力,支持迭代的自我识别和创建实现 Iterator 接口的对象能力.在 ES 中这意味着必须暴露一个默认迭代器,而且这个函数必须使用特殊的 Symbol.iterator 作为键,这个默认迭代器必须引用一个迭代器工厂函数,调用这个工厂函数必须返回一个新的迭代器.以下内置类型都实现了 Iterator 接口
- 字符串
- 数组
- 映射
- 集合
- arguments对象
- NodeList 等 Dom 集合类型
迭代器对象
迭代器是一种一次性使用的对象,用于迭代与其关联的可迭代对象.迭代器 API 使用 next()方法在可迭代对象中遍历数据.每次成功调用 next(),都返回一个 IteratorResult 对象,IteratorResult 对象包括 done 和 value 两个属性.done 为 true 表示迭代器状态耗尽
生成器
生成菜是 ES6 新增的一种数据结构,拥有在一个函数块内暂停和恢复代码执行的能力.生成器也是一个函数,函数名称加一个星号().调用生成器会创建一个生成器对象,但是不会执行生成器内部的程序,在调用 next()方法的时候才会执行内部程序.内部程序碰到 yield的时候,内部函数会暂停,等待下一次 next()的调用.生成器如果是带参数化,yield 会返回上一次传递的参数.yield 会在在生成器执行完成之后,返回生成器return 返回的值