function* expression
 The function* keyword can be used to define a generator function inside an expression. 
Syntax
function* [name]([param1[, param2[, ..., paramN]]]) { statements }
Parameters
- 
nameOptional
-  The function name. Can be omitted, in which case the function is anonymous. The name is only local to the function body. 
- 
paramNOptional
-  The name of an argument to be passed to the function. A function can have up to 255 arguments. 
- statements
-  The statements which comprise the body of the function. 
Description
 A function* expression is very similar to and has almost the same syntax as a function* statement. The main difference between a function* expression and a function* statement is the function name, which can be omitted in function* expressions to create anonymous generator functions. See also the chapter about functions for more information. 
Examples
Using function*
 The following example defines an unnamed generator function and assigns it to x. The function yields the square of its argument: 
let x = function*(y) { yield y * y; };
Specifications
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
| function* | 49 | 12 | 26 | No | 36 | 10 | 49 | 49 | 26 | 36 | 10 | 5.0 | 
| trailing_comma | 58 | 79 | 52 | No | 45 | 10 | 58 | 58 | 52 | 43 | 10 | 7.0 | 
See also
- 
function*statement
- 
GeneratorFunctionobject
- The Iterator protocol
- yield
- yield*
- 
Functionobject
- 
functionstatement
- 
functionexpression
- Functions and function scope
    © 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function*