Javascript 在for..of循环中,屈服*和屈服之间的差异?

Javascript 在for..of循环中,屈服*和屈服之间的差异?,javascript,ecmascript-6,generator,Javascript,Ecmascript 6,Generator,给出以下两段代码: function * gen(g) { for (const value of g) { yield value; } } 及 这种行为有什么不同吗?据我所知,它们在行为上是相同的。我很难看到yield*语法的值。它比在for..of循环中迭代iterable更具局限性,在阅读它时,它所做的事情也不那么明显(在我看来) 这是一个非常详尽的例子。答案通常是,是的,它们是等价的,但有一些小的区别。最显著的区别是返回值通过yield*转发,而不是通过迭代和yiel

给出以下两段代码:

function * gen(g) {
  for (const value of g) {
    yield value;
  }
}

这种行为有什么不同吗?据我所知,它们在行为上是相同的。我很难看到
yield*
语法的值。它比在for..of循环中迭代iterable更具局限性,在阅读它时,它所做的事情也不那么明显(在我看来)

这是一个非常详尽的例子。答案通常是,是的,它们是等价的,但有一些小的区别。最显著的区别是返回值通过
yield*
转发,而不是通过迭代和yield转发


给你。差别很小。

从我看来,除了
yield*
是一个表达式外,它们看起来几乎一样。唯一的区别是,
yield*
的编写速度更快,我猜它已经进行了一些优化。@Anonymous:
yield…
也是一个表达式。@FelixKing但是
对于。。。of
是一个语句,因此您可以执行
var x=yield*…
,但不能执行
var x=for…
。谢谢,这正是我想要的。
function * gen(g) {
  yield * g;
}