Con un bucle while, puedes ejecutar código de forma repetida siempre que se cumpla cierta condición.
Se escribe con la palabra clave while, seguida de una condición entre paréntesis y un bloque de código que contiene el cuerpo del bucle entre llaves.
while (condition) {
// code that is executed repeatedly as long as the condition is
// true
}
JavaScript también tiene un bucle do-while. Aquí la condición se comprueba después de que se haya ejecutado el cuerpo del bucle. Esto es útil cuando la condición depende de evaluaciones que se hacen dentro del cuerpo.
do {
// The code here will always be executed once and then
// repeatedly while the condition is true.
} while (condition);
Dentro del cuerpo de un bucle, puedes usar la palabra clave break para detener por completo la ejecución del bucle.
Esto se usa a menudo junto con true como condición.
Con eso, puedes controlar desde cualquier parte del cuerpo del bucle cuándo debe detenerse el bucle.
const winningNumber = 7;
while (true) {
const num = readUserGuess();
if (num === winningNumber) {
break;
}
}
La palabra clave break no se puede usar dentro de una función anidada en el bucle; consulta la documentación de MDN para ver un ejemplo.
A diferencia de break, la palabra clave continue solo detiene la ejecución de la iteración actual y sigue con la siguiente.
Con continue a menudo puedes evitar envolver grandes partes del cuerpo del bucle en un condicional.
let i = 0;
while (i < 100) {
i = i + 2;
if (i % 3 === 0) {
continue;
}
// The code here will only be executed when i was not divisible
// by 3 in the check above.
}
Un bucle que se repite (en teoría) para siempre se produce cuando la condición del bucle siempre se cumple y dentro del cuerpo del bucle no se alcanza ninguna sentencia break o return. Hay que terminar la ejecución desde afuera. Según el entorno en el que se ejecute ese código, esto se hará de forma automática o necesitará intervención manual.
let i = 0;
while (i < 100) {
if (i % 3 === 0) {
continue;
}
i = i + 2;
}
// This loop runs forever since the variable i does not change
// anymore after it is divisible by 3 the first time.
Detectar bucles infinitos puede parecer trivial en este ejemplo sencillo, pero no siempre es tan fácil con código más complejo. Es una buena práctica pensar detenidamente en si tu condición terminará siendo falsa o si en algún momento se alcanza tu sentencia break o return.