function* expression
The function*
keyword can be used to define a generator function inside an expression.
Syntax
function* [name]([param1[, param2[, ..., paramN]]]) { statements }
Parameters
-
name
Optional -
The function name. Can be omitted, in which case the function is anonymous. The name is only local to the function body.
-
paramN
Optional -
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 -
GeneratorFunction
object - The Iterator protocol
yield
yield*
-
Function
object -
function
statement -
function
expression - 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*