ECMAScript 2018 中的 yield 操作符

在 ECMAScript 2018 中,yield 操作符被引入并成为了一个重要的特性。使用 yield 操作符,我们可以轻松实现自定义迭代器,使得代码更加简洁、易于维护。

yield 操作符简介

yield 操作符可以将一个函数转换为一个可迭代的对象,同时可以在每次迭代中返回一个值。当函数被调用时,执行到 yield 操作符时会将当前状态保存下来,等到下一次迭代时继续执行。

yield 操作符通常用于生成器函数中,生成器函数是一种特殊的函数,它可以通过 yield 操作符将函数的执行过程分割成多个阶段,从而实现迭代器的功能。

实现自定义迭代器

通过 yield 操作符,我们可以轻松实现自定义迭代器。下面是一个简单的示例代码:

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

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

在上面的代码中,我们定义了一个 fibonacci 函数,它是一个生成器函数。在 while 循环中,我们使用 yield 操作符返回当前的斐波那契数列的值。

通过 const fib = fibonacci(),我们创建了一个迭代器对象 fib,然后使用 for 循环迭代 10 次,每次调用 fib.next().value 获取下一个斐波那契数列的值并打印出来。

yield* 操作符

除了 yield 操作符之外,ECMAScript 2018 还引入了 yield* 操作符。yield* 操作符可以将一个可迭代的对象转换为一个生成器函数。

下面是一个简单的示例代码:

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

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

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

在上面的代码中,我们定义了两个生成器函数 foo 和 bar。在 bar 函数中,我们使用 yield* 操作符将 foo 函数转换为一个生成器函数,并在后面添加了一个 yield 3 语句。

最后,我们使用 for 循环迭代 bar 函数的返回值并打印出来。运行上面的代码,输出结果为:

-
-
-

总结

通过使用 yield 操作符和 yield* 操作符,我们可以轻松实现自定义迭代器,使得代码更加简洁、易于维护。在实际开发中,我们可以根据需要使用生成器函数和迭代器对象,从而更好地组织和管理代码。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65f2e70c2b3ccec22fb7dcb2