| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/function* | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since septiembre de 2016.
La declaracin function* (la palabra clave function seguida de un asterisco) define una funcin generadora, que devuelve un objeto Generator.
Tambin puedes definir funciones generadoras usando el constructor GeneratorFunction y una function* expression.
function* nombre([param[, param[, ... param]]]) {
instrucciones
}
nombreEl nombre de la funcin.
paramEl nombre de los argumentos que se le van a pasar a la funcin. Una funcin puede tener hasta 255 argumentos.
instruccionesLas instrucciones que componen el cuerpo de la funcin.
Los generadores son funciones de las que se puede salir y volver a entrar. Su contexto (asociacin de variables) ser conservado entre las reentradas.
La llamada a una funcin generadora no ejecuta su cuerpo inmediatamente; se devuelve un objeto iterador para la funcin en su lugar. Cuando el metodo next() del iterador es llamado , el cuerpo de la funcin generadora es ejecutado hasta la primera expresin yield, la cual especifica el valor que ser retornado por el iterador o con, yield*, delega a otra funcin generadora. El mtodo 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 funcin generadora ha hecho yield al ltimo valor.
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
// ...
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
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-generator-function-definitions |
function* expressionGeneratorFunction objectyieldyield*Function objectfunction declarationfunction expressionFunctions and function scopeThis page was last modified on 29 may 2026 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |