【发布时间】:2015-03-02 21:45:43
【问题描述】:
有人可以向我解释一下:为什么 ES6 中的生成器函数用星号标记?
例如,而不是:
function *someGenerator() {
yield 1;
yield 2;
yield 3;
}
我们可以这样写:
function someGenerator() {
yield 1;
yield 2;
yield 3;
}
甚至:
var someGenerator = () => {
yield 1;
yield 2;
yield 3;
}
var someObject = {
someGenerator() {
yield 1;
yield 2;
yield 3;
}
}
JS 编译器可以在解析时检测到someGenerator 包含yield 运算符,并从该函数生成一个生成器。
为什么检测到yield 存在还不够?
【问题讨论】:
-
我对 ES6 了解不多,但我知道星号并不是
function关键字独有的。 - 你也可以使用yield*。 -
@JamesDonnelly 是的,您可以使用
yield*。所以我的问题是为什么编译器无法通过yield(或yield*)的存在检测到该函数是生成器? -
@limelights - 我把它变红了,但没有找到我的问题的答案。你能指出答案所在的段落吗?
-
这让我很困惑。从查看 MDN 上的文档来看,星号应该是 function*
而不是 function * 。即它紧跟在函数本身而不是函数名本身之后。有区别吗?
标签: javascript ecmascript-6 ecmascript-harmony