JavaScript 生成器
阐述
语法
与 JavaScript 函数类似,但是 function 变为 function*。在函数体中,用 yield 或 yield* 返回值,并且可以返回多次。
语义
设函数的名称为 f,则它可以被如下方式使用:
- 用
f.next():返回由yield或yield*返回的值,形式为{value: ..., done: true/false}; - 用
for ... of:不需要判断。
实例
定义一个生成 ID 的函数:
function* idMaker() {
let index = 0;
while (true) {
yield index++;
}
}
const gen = idMaker();
console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
性质
相关内容
生成器与 JavaScript 函数不同的地方:
- 不具有 JavaScript 箭头函数的写法
- 不能用于 JavaScript 构造函数