function* expression
The function*
keyword can be used to define a generator function inside an expression.
You can also define generator functions using the function*
declaration.
Try it
Syntax
js
function* (param0) {
statements
}
function* (param0, param1) {
statements
}
function* (param0, param1, /* … ,*/ paramN) {
statements
}
function* name(param0) {
statements
}
function* name(param0, param1) {
statements
}
function* name(param0, param1, /* … ,*/ paramN) {
statements
}
Note: An expression statement cannot begin with the keyword function
to avoid ambiguity with a function*
declaration. The function
keyword only begins an expression when it appears in a context that cannot accept 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.
statements
Optional-
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*
declaration. The main difference between a function*
expression and a function*
declaration is the function name, which can be omitted in function*
expressions to create anonymous functions. A function*
expression can be used as an IIFE (Immediately Invoked Function Expression) which runs as soon as it is defined, allowing you to create an ad-hoc iterable iterator object. 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:
js
const x = function* (y) {
yield y * y;
};
Specifications
Specification |
---|
ECMAScript Language Specification # sec-generator-function-definitions |
Browser compatibility
BCD tables only load in the browser
See also
function*
statementGeneratorFunction
object- The Iterator protocol
yield
yield*
Function
objectfunction
statementfunction
expression