yield 关键字的作用是什么?

推荐答案

yield 关键字用于暂停和恢复生成器函数的执行。它允许生成器函数在每次调用 next() 方法时生成一个值,并在生成值后暂停执行,直到再次调用 next() 方法。yield 关键字还可以用于接收外部传入的值。

本题详细解读

1. 生成器函数

生成器函数是一种特殊的函数,使用 function* 语法定义。生成器函数在执行时不会立即运行,而是返回一个生成器对象。生成器对象遵循迭代器协议,可以通过 next() 方法逐步执行函数体。

-- -------------------- ---- -------
--------- ------------------- -
    ----- --
    ----- --
    ----- --
-

----- --------- - --------------------
------------------------------------ -- --- -
------------------------------------ -- --- -
------------------------------------ -- --- -

2. yield 的作用

yield 关键字在生成器函数中有两个主要作用:

  • 暂停执行:当生成器函数执行到 yield 语句时,函数会暂停执行,并返回 yield 后面的值。此时,生成器函数的状态会被保存,直到下一次调用 next() 方法。

  • 恢复执行:当调用生成器对象的 next() 方法时,生成器函数会从上次暂停的地方继续执行,直到遇到下一个 yield 语句或函数结束。

3. yieldnext() 的交互

yield 不仅可以返回值,还可以接收外部传入的值。当调用 next() 方法时,可以传递一个参数,这个参数会成为 yield 表达式的返回值。

-- -------------------- ---- -------
--------- ------------------- -
    ----- ------ - ----- ------ -------
    -------------------- -- --- ------- -- -----
    ----- ------ - ----- ------- -------
    -------------------- -- --- -------- ------
-

----- --------- - --------------------
------------------------------------ -- --- ------ ------
---------------------------------- -- -------------- -- --- ------- ------
----------------------------------- --------------- -- --- ---------

4. yield* 表达式

yield* 表达式用于委托给另一个生成器或可迭代对象。它可以简化生成器函数的编写,特别是在需要嵌套生成器时。

-- -------------------- ---- -------
--------- ------------ -
    ----- --
    ----- --
-

--------- ------------ -
    ------ -------------
    ----- --
-

----- --------- - -------------
------------------------------------ -- --- -
------------------------------------ -- --- -
------------------------------------ -- --- -

5. 总结

yield 关键字是生成器函数的核心,它使得生成器函数能够暂停和恢复执行,从而实现更灵活的控制流。通过 yield,生成器函数可以逐步生成值,并且可以与外部代码进行双向通信。

纠错
反馈