我在看 mdn javascript参考 并注意到 yield
被列在运营商部分。另一方面 return
被列为报表。我还发现 yield
拥有 操作者优先 的2。
的什么特点?yield
使其归入运算符类而非语句?为什么 return
属于语句而不是运算符?
它是一个操作符,因为它可以在表达式中使用。
function* g() {
value = 3;
while (value !== 5) value = Math.floor(yield value + 1);
}
var gen = g();
console.log(gen.next().value);
console.log(gen.next(1.5).value);
我并不确定这一点,但在生成器的上下文中。yield
发送数据到 generator.next()
这样一来,它的操作就像一个函数。 操作符在大多数语言中都是函数的特殊类别(包括JavaScript)。
你可以 几乎可以想象 的 generator.next
调用到它的实例中,传递回调到哪里恢复。而 yield
调用该回调
Return
标志着执行路径的结束,并将一个返回值替换到适当的内存位置,并将调用栈解除1个单位。如果觉得首要的是语言的定义。