function*

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

La declaración function* (la palabra clave function seguida de un asterisco) define una función generadora, que devuelve un objeto Generator.

También puedes definir funciones generadoras usando el constructor GeneratorFunction y una function* expression.

Sintaxis

function* nombre([param[, param[, ... param]]]) { instrucciones } 
nombre

El nombre de la función.

param

El nombre de los argumentos que se le van a pasar a la función. Una función puede tener hasta 255 argumentos.

instrucciones

Las instrucciones que componen el cuerpo de la función.

Descripción

Los generadores son funciones de las que se puede salir y volver a entrar. Su contexto (asociación de variables) será conservado entre las reentradas.

La llamada a una función generadora no ejecuta su cuerpo inmediatamente; se devuelve un objeto iterador para la función en su lugar. Cuando el metodo next() del iterador es llamado , el cuerpo de la función generadora es ejecutado hasta la primera expresión yield, la cual especifica el valor que será retornado por el iterador o con, yield*, delega a otra función generadora. El método next() retorna un objeto con una propiedad value que contiene el valor bajo el operador yield y una propiedad done que indica, con un booleano, si la función generadora ha hecho yield al último valor.

Ejemplos

Ejemplo simple

js
function* idMaker() { var index = 0; while (index < 3) yield index++; } var gen = idMaker(); console.log(gen.next().value); // 0 console.log(gen.next().value); // 1 console.log(gen.next().value); // 2 console.log(gen.next().value); // undefined // ... 

Ejemplo con yield*

js
function* anotherGenerator(i) { yield i + 1; yield i + 2; yield i + 3; } function* generator(i) { yield i; yield* anotherGenerator(i); yield i + 10; } var gen = generator(10); console.log(gen.next().value); // 10 console.log(gen.next().value); // 11 console.log(gen.next().value); // 12 console.log(gen.next().value); // 13 console.log(gen.next().value); // 20 

Especificaciones

Specification
ECMAScript® 2026 Language Specification
# sec-generator-function-definitions

Compatibilidad con navegadores

Ver también