javascript 生成器和迭代器
前置知识
- 生成器函数会返回一种称为Generator的迭代器
- 迭代器是一个对象,定义一个序列,并在终止时返回一个返回值
- Symbol.iterator为每一个对象定义了默认的迭代器,可以被for..of循环使用
- yield* 用于委托给另一个generator或可迭代对象
代码
// 生成器函数gen1 function* gen1() { yield 'y1'; yield 'y2'; yield 'y3'; } // 生成器函数gen2 function* gen2() { yield 'x1'; yield* gen1(); yield 'x3'; } class Test { constructor() { this.persons = ['azoux1', 'azoux2', 'azoux3']; } *[Symbol.iterator]() { // 类支持迭代器方法,因此可以添加一个默认的迭代器 // yield* this.persons.entries(); yield* gen2(); } } let t = new Test(); for (let item of t) { console.log(item); // 输出: x1 y1 y2 y3 x3 }
标签:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现