UNB/ CS/ David Bremner/ teaching/ cs2613/ books/ mdn/ Reference/ Operators/ 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.

Syntax

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

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:

const x = function* (y) {
  yield y * y;
};

Specifications

Browser compatibility

See also