← [ BACK_TO_NOTES ]

Iterable、Iterator、Generator 关系

Iterable、Iterator 和 Generator 的关系、协议与消费方式总览。

#synthesis #growing #javascript #ecmascript

[!info] related notes

Iterable、Iterator、Generator 关系

一句话结论

  • Iterable: 能提供默认迭代器的对象
  • Iterator: 通过 next() 一步步产出值的对象
  • Generator: 用 function* 写出来的 Iterator 生成器

关系链

Iterable --[Symbol.iterator()]--> Iterator --[next()]--> value/done

为什么这三者要放一起

因为很多语言特性其实消费的是“可迭代对象”而不是单纯数组:

  • for...of
  • 展开运算符
  • Array.from()
  • 解构赋值

常见误区

  • 以为 Iterable 和 Iterator 是一个东西
  • 以为 Generator 是异步专用
  • 以为只要有数组就能理解所有迭代协议

推荐阅读顺序

  1. Iterable
  2. Iterator
  3. Generator
创建于 2026/4/7 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本