迭代器与生成器
约 218 字小于 1 分钟
布欧-Lewyon
2026-05-16
首页 › JavaScript › ES6+ 深入 › 迭代器与生成器
迭代器
// 可迭代对象:实现了 Symbol.iterator 方法
const arr = [1, 2, 3];
const iterator = arr[Symbol.iterator]();
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: undefined, done: true }
// for...of 本质
for (let item of arr) {
console.log(item);
}生成器
function* generateSequence() {
yield 1;
yield 2;
yield 3;
}
const gen = generateSequence();
console.log(gen.next()); // { value: 1, done: false }
console.log(gen.next()); // { value: 2, done: false }
console.log(gen.next()); // { value: 3, done: false }
// 使用 for...of
for (let value of generateSequence()) {
console.log(value); // 1, 2, 3
}小结
| 概念 | 说明 |
|---|---|
| 迭代器 | { next() { return { value, done } } } |
| 可迭代对象 | 实现 Symbol.iterator 方法 |
for...of | 循环遍历可迭代对象 |
生成器 function* | 用 yield 产生值,返回值是可迭代对象 |
上一节:Proxy 与 Reflect 下一节:类与继承
