📌  相关文章
📜  保留关键字'yield' - Javascript (1)

📅  最后修改于: 2023-12-03 15:22:28.097000             🧑  作者: Mango

保留关键字 'yield' - JavaScript

在 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() 方法时,我们都会执行函数体内的相应部分。

yield 的作用

在上面的 myGenerator 示例中,yield 关键字用于暂停并返回生成器对象中的下一个值。在第一次调用 next() 方法时,我们会从函数体开始执行,执行到第一个 yield 时会暂停执行,并返回值 1。当我们再次调用 next() 方法时,会从上一次暂停处继续执行,执行到下一个 yield 时会再次暂停执行,并返回值 2。最后,当我们第三次调用 next() 方法时,会继续执行函数体内的代码,直到函数结束。

在使用 yield 时,需要注意以下几点:

  • yield 关键字只能在生成器函数内使用。
  • 在一个生成器对象的生命周期中,只能使用一次 yield 来产生一个值。
  • yield 返回的值可以被 next() 方法的调用者所接收。
  • yield 的返回值会使生成器的状态被标记为已冻结,并且可以在后续的 next() 调用中被 yield 重新激活。
总结

在 JavaScript 中,yield 是一个用于生成器函数内的关键字。它的作用是暂停并返回生成器对象中的下一个值。通过生成器函数和 yield 关键字,我们可以实现一些需要逐步执行的复杂逻辑。