La instrucción while del lenguaje JavaScript es una estructura de control que permite crear bucles. Está diseñada para repetir un bloque de código mientras se cumpla una condición evaluada como verdadera (truthy). Se trata de una herramienta flexible, pero debe usarse con cuidado para evitar los bucles infinitos.
Su propósito principal es permitir la iteración indefinida, es decir, repetir una tarea un número desconocido de veces hasta que la condición deje de ser verdadera. A diferencia de otros bucles, como el for —que suelen usarse cuando conocemos el número exacto de veces que queremos iterar—, el bucle while resulta ideal para cuando no sabemos cuántas repeticiones harán falta.
En JavaScript existen dos variantes de bucles basados en esta idea. El bucle while, por defecto, evalúa la condición antes de cada iteración. Si la condición es verdadera, ejecuta el bloque de código; si es falsa, el bucle termina.
En cambio, la instrucción do…while funciona diferente: ejecuta el bloque al menos una vez antes de evaluar la condición. Si dicha condición es verdadera, vuelve a ejecutar el código, y así sucesivamente hasta que se vuelva falsa.
La instrucción ‘while’
La instrucción while permite crear bucles controlados por entrada, es decir, que primero comprueba si la condición establecida es válida. Luego, entra en el cuerpo del bucle para ejecutar el bloque de código.
Como podemos ver en este diagrama de flujo, el bucle se ejecutará repetidamente y de forma indefinida siempre que la condición sea true (verdadera). El bucle no terminará hasta que la condición sea false (falsa).
La sintaxis de while es la siguiente:
while (condición) {
// Código que se ejecuta
// si la condición es true
}
Entre paréntesis () se indica la condición a evaluar. Puede ser una expresión lógica, aritmética, comparativa o booleana. Las llaves {} que delimitan el bloque contienen el código a ejecutar mientras la condición devuelva true.
Por ejemplo:
let contador = 1;
while (contador <= 5) {
console.log("Iteración:", contador);
contador++;
}
En este ejemplo, primero declaramos la variable contador y la inicializamos en 1. En la condición del bucle se especifica que su valor debe ser menor o igual que 5. Luego, dentro del bloque del while incrementamos la variable en una unidad para preparar la siguiente iteración; así evitamos un bucle infinito.
Resultado:
Iteración: 1
Iteración: 2
Iteración: 3
Iteración: 4
Iteración: 5
En la última iteración, el valor de la variable contador pasó a ser 6. Al evaluarse nuevamente la condición, esta dejó de ser verdadera, por lo que el bucle finalizó y ya no se imprimió ningún valor adicional.
La instrucción ‘do…while’
La instrucción do…while permite crear bucles controlados por salida. En este caso, primero se ejecuta el bloque de código del bucle, antes de verificar la condición. Tras completar la primera iteración, se verifica la condición.
Este tipo de bucle también seguirá ejecutándose mientras la condición sea verdadera. Pero a diferencia del while, se garantiza que el código se ejecuta al menos una vez. El bucle termina cuando la condición deja de cumplirse.
Esta es la sintaxis de do...while:
do {
// Código que se ejecuta
// como mínimo una vez
} while (condición);
La palabra reservada do inicia el bucle, y dentro de las llaves {} se coloca el código que se ejecutará al menos una vez. Tras cerrar el bloque de código se especifica la palabra reservada while. Después del while, entre paréntesis (), se indica la condición a evaluar al final de cada iteración.
Por ejemplo:
let contador = 1;
do {
console.log("Iteración:", contador);
contador++;
} while (contador <= 5);
En este ejemplo, tras declarar la variable contador se ejecuta una primera iteración sin evaluar la condición. Se incrementa el valor de la variable en una unidad. Después se verifica que la variable sea menor o igual que 5.
Resultado:
Iteración: 1
Iteración: 2
Iteración: 3
Iteración: 4
Iteración: 5
Obtenemos el mismo resultado que en el ejemplo con while, pero con una diferencia: el código se ejecutará siempre la primera vez. Por ejemplo, si el contador empezara en 7, el resultado sería «Iteración: 7».