edubun
Español

Bucles: for y while

Sumar a mano los números enteros del 1 al 100 lleva un rato. Un bucle for de tres líneas lo hace de inmediato e imprime 5050.

Hacer lo mismo muchas veces

Imprimir los números del 1 al 5 con cinco líneas de console.log está bien. Imprimir del 1 al 1000 así, no. Un bucle ejecuta el mismo bloque de código una y otra vez, cambiando un poco cada vez, hasta que una condición dice basta. En los bucles es donde las computadoras se ganan el sueldo: nunca se aburren y nunca pierden la cuenta.

El bucle for

for (let i = 1; i <= 5; i++) {
  console.log(i);
}
// imprime 1, 2, 3, 4, 5 en líneas separadas

Los paréntesis que siguen a for contienen tres partes separadas por punto y coma. La primera, let i = 1, se ejecuta una vez antes de que empiece el bucle y crea una variable contador. La segunda, i <= 5, es la condición, que se revisa antes de cada vuelta; cuando se vuelve false, el bucle termina. La tercera, i++, se ejecuta después de cada vuelta y hace avanzar el contador. Cada pasada por el bloque se llama iteración. Síguelo: i es 1, la condición es true, se imprime 1, i pasa a 2, y así hasta que i pasa a 6, la condición es false y el programa sigue después de la llave de cierre.

El contador suele llamarse i, una tradición de las matemáticas, pero sirve cualquier nombre. También puedes contar de otras maneras: for (let i = 10; i >= 0; i -= 2) cuenta hacia atrás 10, 8, 6, 4, 2, 0.

Ir sumando un total

El patrón de bucle más común es el acumulador. Crea una variable antes del bucle, actualízala dentro y úsala después. Esta es la suma del principio:

let sum = 0;
for (let i = 1; i <= 100; i++) {
  sum += i;
}
console.log(sum);   // muestra 5050

Fíjate en dónde está cada línea. Si let sum = 0 estuviera dentro del bucle, sum se reiniciaría en cada iteración. Si console.log estuviera dentro, imprimiría 100 totales parciales en lugar de una sola respuesta. Lo que va antes y después del bucle es tan importante como el bucle mismo.

El bucle while

Un bucle while solo tiene una condición. Sigue ejecutando su bloque mientras la condición sea true. Úsalo cuando no sabes de antemano cuántas vueltas necesitas, como al duplicar un número hasta que pase de 1000.

let n = 1;
let steps = 0;
while (n <= 1000) {
  n *= 2;
  steps++;
}
console.log(n, steps);   // muestra 1024 10

Algo dentro de un bucle while tiene que acabar volviendo false la condición. Si olvidas la línea que cambia n, la condición sigue siendo true para siempre. Eso es un bucle infinito, y la página se congela. Si te pasa en un cuadro de práctica, recarga la página y corrige el código. En un bucle for, el paso de actualización está escrito en la cabecera, y eso hace que este error sea menos frecuente.

break y continue

Dos palabras clave cambian el flujo dentro de un bucle. break sale del bucle de inmediato. continue salta el resto de la iteración actual y pasa a la siguiente. Por ejemplo, un bucle del 1 al 10 con if (i % 3 === 0) continue; al principio imprime todos los números menos 3, 6 y 9.

Ejemplo resuelto. ¿Cuántos números del 1 al 50 son múltiplos de 7? Empieza con let count = 0, recorre i del 1 al 50 y escribe dentro if (i % 7 === 0) count++;. Después del bucle, count vale 7: son 7, 14, 21, 28, 35, 42 y 49.

for (inicio; condición; actualización) { cuerpo } for (let i = 1; i <= 5; i++)

bucleCódigo que ejecuta un bloque una y otra vez
iteraciónUna pasada por el cuerpo del bucle
contadorLa variable que cuenta las vueltas, a menudo i
acumuladorUna variable que se va construyendo dentro de un bucle, como sum
whileRepite mientras una condición sea true
bucle infinitoUn bucle cuya condición nunca se vuelve false
breakSale del bucle ahora
continueSalta a la siguiente iteración
  1. ¿Cuántas líneas imprime esto?
    for (let i = 0; i < 4; i++) {
      console.log(i);
    }
  2. ¿Cuál es el último número que se imprime?
    for (let i = 0; i < 4; i++) {
      console.log(i);
    }
  3. ¿Qué imprime esto?
    let total = 0;
    for (let i = 1; i <= 4; i++) {
      total += i;
    }
    console.log(total);
  4. ¿Qué imprime esto?
    let p = 1;
    for (let i = 1; i <= 5; i++) {
      p *= 2;
    }
    console.log(p);
  5. ¿Qué imprime esto?
    let n = 10;
    while (n > 3) {
      n -= 3;
    }
    console.log(n);
  6. ¿Cuántas líneas imprime esto?
    for (let i = 10; i >= 0; i -= 2) {
      console.log(i);
    }
  7. ¿Qué imprime esto?
    for (let i = 1; i <= 10; i++) {
      if (i === 4) break;
      console.log(i);
    }
    • 1 2 3 on separate lines
    • 1 to 10 except 4
    • 1 2 3 4 on separate lines
  8. ¿Cuántas líneas imprime esto?
    for (let i = 1; i <= 10; i++) {
      if (i % 2 === 0) continue;
      console.log(i);
    }
  9. ¿Qué está mal en este bucle?
    let i = 0;
    while (i < 5) {
      console.log(i);
    }
    • Nada
    • i nunca cambia, así que nunca se detiene
    • No imprime nada
  10. ¿Qué imprime esto?
    let count = 0;
    for (let i = 1; i <= 50; i++) {
      if (i % 7 === 0) count++;
    }
    console.log(count);
Ideas clave
  • for (inicio; condición; actualización) { ... } repite mientras la condición sea true.
  • Crea los acumuladores antes del bucle, actualízalos dentro y úsalos después.
  • while (condición) { ... } conviene para bucles con un número de vueltas desconocido.
  • Algo tiene que volver false la condición, o el bucle no termina nunca.
  • break sale del bucle; continue salta a la vuelta siguiente.
Fuentes de este curso (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

Fecha de consulta: 2026-10-17