📅  最后修改于: 2023-12-03 15:22:28.097000             🧑  作者: Mango
在 JavaScript 中,yield
是一个关键字,它通常被用在生成器函数中。在本文中,我们将介绍生成器函数以及 yield
的作用。
一个生成器函数是一个可以暂停和恢复执行的函数。当一个生成器函数被调用时,它并不会立即运行函数体内的代码,而是返回一个称为生成器对象的迭代器。我们可以通过该迭代器通过一次次地调用 next()
方法来逐步执行函数体内的代码。
以下是一个简单的生成器函数:
function* myGenerator() {
console.log('Start');
yield 1;
console.log('Mid');
yield 2;
console.log('End');
}
在上面的例子中,我们定义了一个名为 myGenerator
的生成器函数。当该函数被调用时,它不会执行函数体内的代码,而是返回一个生成器对象。我们可以使用 next()
方法逐步执行函数体内的代码。如下所示:
const generatorObject = myGenerator();
generatorObject.next(); // Start, { value: 1, done: false }
generatorObject.next(); // Mid, { value: 2, done: false }
generatorObject.next(); // End, { value: undefined, done: true }
可以看到,每次调用 next()
方法时,我们都会执行函数体内的相应部分。
在上面的 myGenerator
示例中,yield
关键字用于暂停并返回生成器对象中的下一个值。在第一次调用 next()
方法时,我们会从函数体开始执行,执行到第一个 yield
时会暂停执行,并返回值 1
。当我们再次调用 next()
方法时,会从上一次暂停处继续执行,执行到下一个 yield
时会再次暂停执行,并返回值 2
。最后,当我们第三次调用 next()
方法时,会继续执行函数体内的代码,直到函数结束。
在使用 yield
时,需要注意以下几点:
yield
关键字只能在生成器函数内使用。yield
来产生一个值。yield
返回的值可以被 next()
方法的调用者所接收。yield
的返回值会使生成器的状态被标记为已冻结,并且可以在后续的 next()
调用中被 yield
重新激活。在 JavaScript 中,yield
是一个用于生成器函数内的关键字。它的作用是暂停并返回生成器对象中的下一个值。通过生成器函数和 yield
关键字,我们可以实现一些需要逐步执行的复杂逻辑。