--- title: function* 表达式 slug: Web/JavaScript/Reference/Operators/function* tags: - ECMAScript 2015 - Function - Iterator - JavaScript - Operator - Primary Expression translation_of: Web/JavaScript/Reference/Operators/function* ---
function*
关键字可以在表达式内部定义一个生成器函数。
{{EmbedInteractiveExample("pages/js/expressions-functionasteriskexpression.html")}}
function* [name]([param1[, param2[, ..., paramN]]]) { statements }
name
paramN
statements
function*
表达式和{{jsxref('Statements/function*', 'function* 声明')}}比较相似,并具有几乎相同的语法。function*
表达式和function*
声明之间主要区别就是函数名,即在创建匿名函数时,function*
表达式可以省略函数名。阅读{{jsxref('Function', '函数')}}章节了解更多信息。
下面的示例定义了一个未命名的生成器函数并把它赋值给x
。函数产出它的传入参数的平方:
var x = function*(y) { yield y * y; };
Specification | Status | Comment |
---|---|---|
{{SpecName('ES2015', '#', 'function*')}} | {{Spec2('ES2015')}} | Initial definition. |
{{SpecName('ESDraft', '#', 'function*')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.operators.function_star")}}