JavaScript-面试-迭代器与生成器
2026年10月16日·Admin·2 次浏览
面试题:迭代器协议?for...of 与 for...in?Generator 用途?
可迭代协议(Iterable)
对象需有 Symbol.iterator 方法,返回迭代器对象。
迭代器协议(Iterator)
对象有 next(),返回 { value, done }。
内置可迭代:Array、String、Map、Set、arguments、NodeList(现代环境)等。
for...of vs for...in
| for…of | for…in | |
|---|---|---|
| 遍历 | 值(迭代器) | 可枚举属性键(含原型链上可枚举) |
| 数组 | 元素值 | 字符串索引,顺序不保证像「数组顺序」直觉 |
数组遍历元素优先 for...of 或传统 for。
Generator function*
yield暂停执行,next()恢复,适合惰性序列、异步流程编排(配合手动next或与 async 对比)。- 返回对象同时实现 Iterable 与 Iterator。