为什么yield被归类为操作符而不是语句?

问题描述 投票:4回答:1

我在看 mdn javascript参考 并注意到 yield 被列在运营商部分。另一方面 return 被列为报表。我还发现 yield 拥有 操作者优先 的2。

的什么特点?yield 使其归入运算符类而非语句?为什么 return 属于语句而不是运算符?

javascript syntax yield
1个回答
3
投票

它是一个操作符,因为它可以在表达式中使用。

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

1
投票

我并不确定这一点,但在生成器的上下文中。yield 发送数据到 generator.next() 这样一来,它的操作就像一个函数。 操作符在大多数语言中都是函数的特殊类别(包括JavaScript)。

你可以 几乎可以想象generator.next 调用到它的实例中,传递回调到哪里恢复。而 yield 调用该回调

Return 标志着执行路径的结束,并将一个返回值替换到适当的内存位置,并将调用栈解除1个单位。如果觉得首要的是语言的定义。

© www.soinside.com 2019 - 2024. All rights reserved.