yield 是 ES6 引入的一个关键字,用于定义生成器函数。生成器函数是一种特殊的函数,它可以暂停执行并返回多个值。在生成器函数中,使用 yield 关键字来指定每次返回的值。
下面是一个简单的例子:
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const gen = foo();
console.log(gen.next().value); // 输出 'a'
console.log(gen.next().value); // 输出 'b'
console.log(gen.next().value); // 输出 'c'
上述代码定义了一个名为 foo 的生成器函数,并使用 yield 指定了三个要返回的值。然后通过调用 foo 函数创建了一个生成器对象 gen,并分别调用 gen 的 next 方法获取每次返回的值。
yield 关键字有两个主要作用:
- 暂停执行:当执行到 yield 关键字时,会将当前状态保存起来,并将控制权交给调用者。
- 返回值:使用 yield 关键字可以返回任意类型的值,并且每次调用 next 方法时都会从上一次暂停处继续执行。
通过这样的方式,我们可以利用生成器函数实现一些高级功能,例如异步编程、惰性求值等。