- 生成器函数的定义方式:
- 在 JavaScript 中,生成器函数通过在
function
关键字后加上 *
来定义。例如:function* generatorFunction() {}
。这里的 *
可以紧挨着 function
关键字,也可以有空格,如 function * generatorFunction() {}
同样有效。
yield
关键字的使用:
- 暂停生成器:在生成器函数内部,
yield
关键字用于暂停生成器的执行,并返回一个值。当生成器函数执行到 yield
语句时,它会暂停,并且 yield
后面表达式的值会作为生成器对象的 next()
方法调用的返回值中的 value
属性返回。
- 恢复生成器:通过调用生成器对象的
next()
方法,可以恢复生成器的执行。next()
方法的调用会使生成器从暂停的 yield
语句处继续执行,直到遇到下一个 yield
语句或者函数结束。
- 生成 1 到 5 整数的生成器函数示例:
function* generateNumbers() {
for (let i = 1; i <= 5; i++) {
yield i;
}
}
// 使用生成器
const gen = generateNumbers();
console.log(gen.next().value); // 输出 1
console.log(gen.next().value); // 输出 2
console.log(gen.next().value); // 输出 3
console.log(gen.next().value); // 输出 4
console.log(gen.next().value); // 输出 5