Una de las principales ventajas de la programación es la posibilidad de crear bucles y repeticiones para tareas específicas, y que no tengamos que realizarlas varias veces de forma manual. Existen muchas formas de realizar bucles, vamos a ver los más basicos, similares en otros lenguajes de programación:
Tipo de bucle | Descripción |
---|---|
while |
Bucles simples. |
for |
Bucles clásicos por excelencia. |
do..while |
Bucles simples que se realizan siempre como mínimo una vez. |
for..in |
Bucles sobre posiciones de un array. Los veremos más adelante. |
for..of |
Bucles sobre elementos de un array. Los veremos más adelante. |
Array functions | Bucles específicos sobre arrays. Los veremos más adelante. |
Antes de comenzar a ver que tipos de bucles existen en Javascript, es necesario conocer algunos conceptos básicos de los bucles:
Condición: Al igual que en los if
, en los bucles se va a evaluar una condición para saber si se debe repetir el bucle o finalizarlo. Generalmente, si la condición es verdadera, se repite. Si es falsa, se finaliza.
Iteración: Cada repetición de un bucle se denomina iteración. Por ejemplo, si un bucle repite una acción 10 veces, se dice que tiene 10 iteraciones.
Contador: Muchas veces, los bucles tienen una variable que se denomina contador, porque cuenta el número de repeticiones que ha hecho, para finalizar desde que llegue a un número concreto. Dicha variable hay que inicializarla (crearla y darle un valor) antes de comenzar el bucle.
Incremento: Cada vez que terminemos un bucle se suele realizar el incremento (o decremento) de una variable, generalmente la denominada variable contador.
Bucle infinito: Es lo que ocurre si en un bucle se nos olvida incrementar la variable contador o escribimos una condición que nunca se puede dar. El bucle se queda eternamente repitiéndose y el programa se queda «colgado».
El bucle while es uno de los bucles más simples que podemos crear. Vamos a repasar el siguiente ejemplo y todas sus partes, para luego repasar que ocurre en cada iteración del bucle:
i = 0; // Inicialización de la variable contador
// Condición: Mientras la variable contador sea menor de 5
while (i < 5) {
console.log("Valor de i:", i);
i = i + 1; // Incrementamos el valor de i
}
Veamos que es lo que ocurre a la hora de hacer funcionar ese código:
i
a 0
.i
y luego incrementamos el valor actual de i
en 1
.Una muestra paso a paso de las iteraciones de este primer ejemplo:
Iteración del bucle | Valor de i | Descripción | Incremento |
---|---|---|---|
Antes del bucle | i = undefined | Antes de comenzar el programa. | |
Iteración #1 | i = 0 | ¿(0 < 5)? Verdadero. Mostramos 0 por pantalla. | i = 0 + 1 |
Iteración #2 | i = 1 | ¿(1 < 5)? Verdadero. Mostramos 1 por pantalla. | i = 1 + 1 |
Iteración #3 | i = 2 | ¿(2 < 5)? Verdadero. Mostramos 2 por pantalla. | i = 2 + 1 |
Iteración #4 | i = 3 | ¿(3 < 5)? Verdadero. Mostramos 3 por pantalla. | i = 3 + 1 |
Iteración #5 | i = 4 | ¿(4 < 5)? Verdadero. Mostramos 4 por pantalla. | i = 4 + 1 |
Iteración #6 | i = 5 | ¿(5 < 5)? Falso. Salimos del bucle. |
El bucle while es muy simple, pero requiere no olvidarse accidentalmente de la inicialización y el incremento (además de la condición), por lo que el bucle for resulta más interesante, ya que para hacer un bucle de este tipo hay que escribir previamente siempre estos tres factores.
La operación
i = i + 1
es lo que se suele llamar un incremento de una variable. Es muy común simplificarla comoi++
, que hace exactamente lo mismo: aumenta en 1 su valor.
El bucle for es quizás uno de los más utilizados en el mundo de la programación. En Javascript se utiliza exactamente igual que en otros lenguajes como Java o C/C++. Veamos el ejemplo anterior utilizando un bucle for:
// for (inicialización; condición; incremento)
for (i = 0; i < 5; i++) {
console.log("Valor de i:", i);
}
Como vemos, la sintaxis de un bucle for es mucho más compacta y rápida de escribir que la de un bucle while. La primera vez puede parecer algo confusa, pero es mucho más práctica porque te obliga a escribir la inicialización, la condición y el incremento antes del propio bucle, y eso hace que no te olvides de estos tres puntos fundamentales.
En programación es muy habitual empezar a contar desde cero. Mientras que en la vida real se contaría desde 1 hasta 10, en programación se contaría desde 0 hasta 9.
Aunque no suele ser habitual, es posible añadir varias inicializaciones o incrementos en un bucle for separando por comas. En el siguiente ejemplo además de aumentar el valor de una variable i
, inicializamos una variable con el valor 5
y lo vamos decrementando:
for (i = 0, j = 5; i < 5; i++, j--) {
console.log("Valor de i y j:", i, j);
}
Si i++
aumenta en 1 el valor de i
en cada iteración, lo que hace j--
es disminuir en 1 el valor de j
en cada iteración.
Más adelante hablaremos de los arrays y veremos varias formas que tiene Javascript de realizar bucles adaptados a ese tipo de variables.