#!/usr/bin/nodejs
const a=[];
var i = 0;
for (i = 0; i < 10; i++) a[i] = 10 + i;
= 0;
i while (i < 10) {
console.log (i + " -> " + a[i]);
++;
i
}
console.log ("----------------------");
: while (i > 0) {
L0--;
iprocess.stdout.write (i + " -> "+ a[i]);
if (i > 4) {
process.stdout.write ("\n");
continue L0;
}process.stdout.write ("**\n");
if (i == 1) break;
}
// Recorre array usando claves/indices
for (i in a) {
console.log (i + " -> " + a[i]);
}
// Recorre valores del array
for (i of a) {
console.log (i);
}
JavaScript nos ofrece una gran flexibilidad a la hora de crear
bucles. Si bien, sigue la filosofía general del lenguaje C con
instrucciones for
, while
y
do while
, JavaScript incorpora elementos como las etiquetas
que también utilizan otros lenguajes como Perl o Rust. Estas etiquetas
se pueden utilizar con las palabras clave continue
y
break
para especificar donde continuar, lo cual es muy útil
especialmente cuando trabajamos con bucles anidados (un bucle dentro de
otro bucle).
Tomando el siguiente código como ejemplo:
:
bucle0for (let i = 0; i < 10; i++) {
bucle1:
for (let j = 0; j < 10; j++) {
if (j === 5) continue bucle0;
}console.log (i,j);
}
continue bucle0
continuará en la siguiente iteración del
bucle más externo, saltándose todas las iteraciones del bucle interno
desde ese momento. Si hubiéramos utilizado break bucle0
habríamos abortado ambos bucles, mientras que si hubieramos utilizado
break bucle1
o simplemente break
, habríamos
terminado solamente el bucle interno. Observad como en este caso,
continue bucle0
y break
tienen el mismo
resultado.
¿SABÍAS QUE?
Se pueden etiquetar bloques de código lo que nos permite utilizarbreak
en esos bloques y saltar las instrucciones restantes del mismo:let a = false; let b = false; : { fooconsole.log ("Bloque de código"); if (a) break foo; bar: { console.log ("Bloque interior"); if (b) break bar; console.log ("Continue bloque interior"); }console.log ("Continua el bloque"); }
Observad que solo podéis hacer esto con
break
, usarcontinue
no tiene ningún sentido
JavaScript también ofrece versiones de los bucles for
para recorrer tipos iterables como los arrays o tablas hash,
permitiéndonos recorrer esas estructuras utilizando la clave (el índice
para el caso de un array) o los valores propiamente dichos.
SABÍAS QUE
La construcción
for (a in ..)
también se puede utilizar para acceder a todos los campos de un objeto:var obj = {}; .nombre = "Un Nombre"; obj.edad = 28; obj.altura = 1.8; obj.saludo = function () {console.log("Hola. Soy "+this.nombre)} obj .saludo(); objfor (i in obj) console.log ("OBJETO." + i + " ==> ", obj[i]);
Los objetos Array
en JavaScript nos ofrecen un método
forEach
con el que recorrer estas estructuras de datos de
forma sencilla. El siguiente código muestra un ejemplo de su uso:
.forEach((value,index) => {console.log (index + " -> "+ value)}); a
El método forEach
espera como parámetro una función. En
el ejemplo anterior hemos utilizado una función lambda. El código es
equivalente a:
function print_item (value, index) {console.log (index + " -> "+ value)};
.forEach (print_item); a
Podemos escribir bucles infinitos en JavaScript utilizando cualquiera de las siguientes expresiones:
for (;;) {
// Repite para siempre
}
while (true) {
// Repite para siempre
}
do {
// Repite para siempre
while (true);
}
:
infinito// Repite para siempre
; goto infinito
Resumen
- Javascript ofrece las palabras claves
for
,while
,do while
ygoto
para generar bucles. - Javascript permite controlar el flujo de ejecución de los bucles
usando las palabras claves
continue
ybreak
las cuales pueden ir seguida de una etiqueta - Los bucles
for
se pueden utilizar para recorrer iterables usando su clavefir (i in iterable)
o los valores usandofor (i of iterable
. - Los arrays ofrecen un método
forEach
que ofrece un enfoque funcional con el que recorrer todos sus elementos del array.
■