产量显示语法错误;在 javascript 中缺失;

Amm*_*han 1 javascript ecmascript-harmony

我正在写生成器的简单函数

function simpleGenerator(){
  yield "first";
  yield "second";
  yield "third";
};
var g = simpleGenerator();
console.log(g.next());
Run Code Online (Sandbox Code Playgroud)

它是为了屈服线——

SyntaxError: missing ; before statement
Run Code Online (Sandbox Code Playgroud)

我无法得到显示错误的原因...如果我使用 return like

function simpleGenerator(x){
 while(true){
  var a=x*2;
  return a;
 }
}
var g = simpleGenerator(2);
console.log(g);
Run Code Online (Sandbox Code Playgroud)

它工作正常,

the*_*eye 5

生成器函数必须像这样定义

function * simpleGenerator() {    # Note the `*` after `function` keyword
    yield "first";
    yield "second";
    yield "third";
};
var g = simpleGenerator();
console.log(g.next());
# { value: 'first', done: false }
Run Code Online (Sandbox Code Playgroud)

引用ECMA 6 的 Harmony 页面的 Generator 函数

扩展函数语法以添加可选的 * 标记:

FunctionDeclaration:
    "function" "*"? Identifier "(" FormalParameterList? ")" "{" FunctionBody "}"   FunctionExpression:
    "function" "*"? Identifier? "(" FormalParameterList? ")" "{" FunctionBody "}"
Run Code Online (Sandbox Code Playgroud)

带有 * 标记的函数称为生成器函数。以下两个一元运算符只允许在生成器函数的直接体中(即,在体中但不能嵌套在另一个函数中):

AssignmentExpression:
    ...
    YieldExpression

YieldExpression:
    "yield" ("*"? AssignmentExpression)?
Run Code Online (Sandbox Code Playgroud)

如果在非生成器函数中出现 yield 或 yield* 表达式,则会引发早期错误。YieldExpression: