Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnología web para desarrolladores
  2. JavaScript
  3. Referencia de JavaScript
  4. Expresiones y operadores
  5. yield*

Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.

View in EnglishAlways switch to English

yield*

Baseline Widely available

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

La expresiónyield* es usada para delegar a otrogenerator u objeto iterable.

Sintaxis

yield* [[expression]];
expression

La expresión que retorna un objeto iterable

Descripción

La expresiónyield* itera sobre el operador realizando yield de cada valor retornado por este.

El valor de la expresionyield* es el valor retornado por el iterador en si mismo cuando es finalizado (ej., cuandodone es true).

Ejemplos

Delegando a otro generator

En el siguiente código, los valores declarados con yield eng1() son devueltos por las llamadas anext() al igual que eng2().

js
function* g1() {  yield 2;  yield 3;  yield 4;}function* g2() {  yield 1;  yield* g1();  yield 5;}var iterator = g2();console.log(iterator.next()); // { value: 1, done: false }console.log(iterator.next()); // { value: 2, done: false }console.log(iterator.next()); // { value: 3, done: false }console.log(iterator.next()); // { value: 4, done: false }console.log(iterator.next()); // { value: 5, done: false }console.log(iterator.next()); // { value: undefined, done: true }

Otros objetos iterables

Además de los objetos generator,yield* también se puede usaryield sobre otros tipos de iterables, ej. arrays, strings u objetos arguments.

js
function* g3() {  yield* [1, 2];  yield* "34";  yield* Array.from(arguments);}var iterator = g3(5, 6);console.log(iterator.next()); // { value: 1, done: false }console.log(iterator.next()); // { value: 2, done: false }console.log(iterator.next()); // { value: "3", done: false }console.log(iterator.next()); // { value: "4", done: false }console.log(iterator.next()); // { value: 5, done: false }console.log(iterator.next()); // { value: 6, done: false }console.log(iterator.next()); // { value: undefined, done: true }

El valor de la expresiónyield*

yield* es una expresión, no una declaración, por lo que se evalua como un valor.

js
function* g4() {  yield* [1, 2, 3];  return "foo";}var result;function* g5() {  result = yield* g4();}var iterator = g5();console.log(iterator.next()); // { value: 1, done: false }console.log(iterator.next()); // { value: 2, done: false }console.log(iterator.next()); // { value: 3, done: false }console.log(iterator.next()); // { value: undefined, done: true },// g4() returned { value: "foo", done: true } at this pointconsole.log(result); // "foo"

Especificaciones

Specification
ECMAScript® 2026 Language Specification
# sec-generator-function-definitions-runtime-semantics-evaluation

Compatibilidad con navegadores

Ver también

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp