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;
}