Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
产出显示语法错误;在javascript中缺少;_Javascript_Ecmascript Harmony - Fatal编程技术网

产出显示语法错误;在javascript中缺少;

产出显示语法错误;在javascript中缺少;,javascript,ecmascript-harmony,Javascript,Ecmascript Harmony,我正在写生成器的简单函数 function simpleGenerator(){ yield "first"; yield "second"; yield "third"; }; var g = simpleGenerator(); console.log(g.next()); 这是为了获得收益-- 我无法获得显示错误的原因。。。 如果我使用return-like function simpleGenerator(x){ while(true){ var a=x*2; r

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

function simpleGenerator(){
  yield "first";
  yield "second";
  yield "third";
};
var g = simpleGenerator();
console.log(g.next());
这是为了获得收益--

我无法获得显示错误的原因。。。 如果我使用return-like

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

它工作正常,必须这样定义生成器函数

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

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

FunctionDeclaration:
    "function" "*"? Identifier "(" FormalParameterList? ")" "{" FunctionBody "}"   FunctionExpression:
    "function" "*"? Identifier? "(" FormalParameterList? ")" "{" FunctionBody "}"
带有*标记的函数称为生成器函数。以下两个一元运算符仅允许在生成器函数的直接体中使用(即,在体中,但不允许 嵌套在另一个函数中):

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


生成器函数必须这样定义

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

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

FunctionDeclaration:
    "function" "*"? Identifier "(" FormalParameterList? ")" "{" FunctionBody "}"   FunctionExpression:
    "function" "*"? Identifier? "(" FormalParameterList? ")" "{" FunctionBody "}"
带有*标记的函数称为生成器函数。以下两个一元运算符仅允许在生成器函数的直接体中使用(即,在体中,但不允许 嵌套在另一个函数中):

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


@选择它是可选的,因为您可以删除
*
来定义一个普通函数。您是对的。我仍然不知道这是否是问题的原因,因为Mozilla实现的Javascript 1.7中已经存在了
yield
关键字,并且封装函数当时不需要
*
。@lyschoning这是未来的标准。因此,如果FF做的不同,它是一个非标准功能或不是ECMA标准投诉功能:-)我想知道浏览器OP使用的是什么。当标志丢失时,Chrome中有一个SyntaxError,但它是一个
SyntaxError:Unexpected字符串
I get:SyntaxError:function语句需要name@lyschoening它是可选的,因为您可以删除
*
来定义一个普通函数。您是对的。我仍然不知道这是否是问题的原因,因为Mozilla实现的Javascript 1.7中已经存在了
yield
关键字,并且封装函数当时不需要
*
。@lyschoning这是未来的标准。因此,如果FF做的不同,它是一个非标准功能或不是ECMA标准投诉功能:-)我想知道浏览器OP使用的是什么。当标志丢失时,Chrome中有一个SyntaxError,但它是一个
SyntaxError:Unexpected字符串
I get:SyntaxError:function语句需要一个名称