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)
它工作正常,
生成器函数必须像这样定义
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 函数,
扩展函数语法以添加可选的 * 标记:
Run Code Online (Sandbox Code Playgroud)FunctionDeclaration: "function" "*"? Identifier "(" FormalParameterList? ")" "{" FunctionBody "}" FunctionExpression: "function" "*"? Identifier? "(" FormalParameterList? ")" "{" FunctionBody "}"带有 * 标记的函数称为生成器函数。以下两个一元运算符只允许在生成器函数的直接体中(即,在体中但不能嵌套在另一个函数中):
Run Code Online (Sandbox Code Playgroud)AssignmentExpression: ... YieldExpression YieldExpression: "yield" ("*"? AssignmentExpression)?如果在非生成器函数中出现 yield 或 yield* 表达式,则会引发早期错误。YieldExpression:
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |