Control de Flujo
- Formato:
lectura
- Duración:
15 min
Loops
Mecanismos que pueden ser usados con cliclos
Los siguientes mecanismos pueden ser usados con ciclos:
break [label]
Sale de un ciclo.
continue [label]
Detiene la iteración actual e inmediatamente ejecuta la siguiente.
Labels
Un label
(etiqueta) es un identificador seguido por :
. Al inicio de un ciclo,
un label te permite hacer break
o continue
incluso si está dentro anidado de
otro ciclo anidado. Cuando está al inicio de un bloque, te permite salir del
mismo con la sentencia break
. En ambos casos, el nombre del label se convierte
en un argumento de break
o continue
. Aquí un ejemplo de break
:
const findEvenNumber = arr => {
loop: { // label
for (let i = 0, l = arr.length; i < l; i++) {
let element = arr[i];
if (element % 2 === 0) {
console.log(`Found: ${element}`);
break loop;
}
}
console.log('No even number found.');
}
console.log('DONE');
};
while
Un ciclo while:
while (condition) {
// statement
}
Ejecuta statement
tantas veces como la condición se cumpla. Si la condición es
siempre true
, entonces entra en un infinite loop
(ciclo infinito).
// infinite loop
while (1 === 1) { }
En el siguiente ejemplo, eliminamos todos los elementos del arreglo y los mostramos en la consola:
const arr = ['a', 'b', 'c'];
while (arr.length > 0) {
console.log(arr.shift());
}
/*
*
* La salida de este código será:
* a
* b
* c
*
*/
do-while
Un ciclo do-while:
do {
// statements
} while (condition);
Ejecuta los statements
al menos una vez y luego tantas veces como se cumpla la
condición. Por ejemplo:
const pattern = /^[0-9]+$/;
let line;
do {
line = prompt('Enter a number:');
} while(!pattern.test(line));
for
En un ciclo for:
for ([init]; [condition]; [post_iteration]) {
// statements
}
init
es ejecuta una vez antes que inicie el ciclo, que ejecuta statements
tantas veces como condition
sea true
. Puedes usar let
para declarar
variables, pero el scope de dicha variable solo será dentro del cliclo.
post_iteration
se ejecuta luego de cada iteración. Por ejemplo:
const arr = ['a', 'b', 'c'];
for (let i = 0, l = arr.length; i < l; i++) {
console.log(arr[i]);
}
/*
*
* El resultado de este código es:
* a
* b
* c
*
*/