Bucles

Digamos que quieres imprimir los números del 1 al 100, o saludar cada carácter en una palabra, o seguir haciendo una pregunta hasta que la respuesta sea correcta. Podrías escribir la misma línea cien veces, pero eso es tedioso de escribir y peor de cambiar. Un bucle es cómo le dices a JavaScript que ejecute un trozo de código una y otra vez, así escribes el trabajo una sola vez y dejas que el lenguaje haga la repetición. Este capítulo cubre los tres bucles que usarás más: for, while y for...of.
El bucle for
El bucle for es el que usas cuando sabes cuántas veces repetir. Cuenta por ti. Aquí está imprimiendo los números del 0 al 4:
for (let i = 0; i < 5; i++) {
console.log(i);
}
// 0
// 1
// 2
// 3
// 4La parte entre paréntesis tiene tres piezas, separadas por punto y coma:
let i = 0es el inicio: crea un contador llamadoiy lo establece en 0.i < 5es la condición: el bucle sigue mientras esto sea verdadero.i++es el paso: después de cada pasada, suma 1 ai(i++es corto parai = i + 1).
Así que el bucle inicia i en 0, comprueba que i < 5, ejecuta el código entre llaves, luego suma 1 y comprueba de nuevo. Cuando i llega a 5 la condición es falsa y el bucle se detiene.
for se repite un número fijo de veces y cuenta por ti. Su encabezado tiene tres partes: un inicio como let i = 0, una condición como i < 5 que lo mantiene funcionando, y un paso como i++ que lo mueve adelante. Cuando la condición se vuelve falsa, el bucle se detiene. El bucle while
A veces no sabes cuántas veces repetir, solo sabes una condición que debería mantenerse verdadera. Para eso es el bucle while. Sigue ejecutándose mientras su condición se mantenga:
let count = 3;
while (count > 0) {
console.log(count);
count = count - 1;
}
console.log("¡Comenzar!");
// 3
// 2
// 1
// ¡Comenzar!El bucle comprueba count > 0, ejecuta el código, luego comprueba de nuevo. Observa que algo dentro del bucle cambia count, así la condición finalmente se vuelve falsa y el bucle se detiene. Si nada dentro jamás hace que la condición sea falsa, el bucle se ejecuta por siempre. Ese es un bucle infinito, y congelará tu programa, así que siempre asegúrate de que la condición pueda cambiar.
while se repite mientras su condición sea verdadera, sin contador incorporado. Úsalo cuando no conozcas el número de repeticiones de antemano. Siempre cambia algo dentro del bucle para que la condición pueda volverse falsa, o obtendrás un bucle infinito que congela el programa. Hacer bucles sobre un string con for...of
Los bucles for y while cuentan con un número, pero a menudo quieres visitar cada elemento en algo directamente. for...of hace eso. Aquí camina a través de cada carácter de una palabra:
for (const char of "hola") {
console.log(char);
}
// h
// o
// l
// aLéelo como "para cada carácter de la palabra". En cada pasada, char mantiene el siguiente carácter, y nunca tocas un contador o una condición. Es más limpio que un bucle for cuando todo lo que quieres es mirar cada elemento a su vez.
Usarás for...of principalmente en arrays, que son listas de valores que conocerás en los próximos capítulos. Un string es una buena primera cosa sobre la que hacer un bucle porque ya es una secuencia de caracteres, y for...of la trata exactamente así.
for...of visita cada elemento directamente, sin contador y sin condición que gestionar. En un string, cada pasada te da el siguiente carácter. Lo usarás más en arrays después, pero un string es una primera cosa limpia sobre la que hacer un bucle porque ya es una secuencia de caracteres. A dónde van los bucles desde aquí
Los bucles son cómo dejas de repetirte a ti mismo y dejas que el lenguaje haga la repetición. El bucle for cuenta un número conocido de veces, while se repite mientras una condición se mantiene, y for...of camina los elementos de una secuencia directamente. El único hábito a llevar de aquí: asegúrate de que cada bucle pueda terminar, y prefiere for...of cuando solo necesitas cada elemento.
La verdadera razón por la que importan los bucles es que la mayoría de los datos con los que trabajas vienen en colecciones. Los próximos capítulos introducen arrays, las listas sobre las que harás bucles constantemente, y más tarde los métodos de arrays que a menudo reemplazan un bucle escrito a mano cuando estás transformando datos. Si quieres afilar las condiciones en las que tus bucles dependen, condicionales cubre las comparaciones que deciden cuándo un bucle sigue funcionando y cuándo se detiene.

