Saltar al contenido

Secuencias sin fin

JavaScript · Unidad 16: Iteradores y generadores

Un generador puede no terminar nunca: un while (true) adentro entrega valores mientras se los pidan. No se queda pegado, porque solo trabaja cuando alguien pide.

El que tiene que parar es quien lo recorre, con un break. Sin ese break, el programa sí se cuelga.

function* naturales() {
  let n = 1;
  while (true) {
    yield n;
    n++;
  }
}
for (const n of naturales()) {
  if (n > 3) break;
  console.log(n);
}

Imprime

1
2
3

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Predice la salida

    ¿Qué imprime este código?

  2. 2. Completa el código

    Completa para que sume los números hasta el 4 y se detenga.

  3. 3. Predice la salida

    ¿Qué imprime este código?

  4. 4. Predice la salida

    ¿Qué imprime este código?

  5. 5. Encuentra el bug

    Debería imprimir los tres primeros números pares: 2, 4 y 6. ¿Qué línea tiene el error?

  6. 6. Completa el código

    Completa para que el generador entregue impares mientras se los pidan.

  7. 7. Opción múltiple

    naturales() entrega 1, 2, 3… sin terminar nunca. ¿Qué pasa si escribes [...naturales()]?

  8. 8. Encuentra el caso que falla

    tomaPares(xs, n) debería regresar los primeros n pares de xs, o los que haya si hay menos de n. ¿Con qué llamada falla?

  9. 9. Opción múltiple

    ¿Qué entrega este generador?

  10. 10. Predice la salida

    ¿Qué imprime este código?

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →