| A veces
es necesario repetir un mismo conjunto de sentencias varias
veces. Por ejemplo, para borrar todos los elementos de
un array simplemente debemos hacer delete en cada uno de ellos, es una sentencia
que se repetirá tantas veces como largo sea el array.
Este es un típico
trabajo para las estructuras repetitivas o bucles. En esencia la ejecución
de un bucle consiste en ejecutar repetidas veces una misma parte del programa
(cuerpo del bucle) hasta que se cumpla una
determinada condición,
en cuyo caso se acaba la repetición y el programa continúa
con su flujo normal. Existen varias sentencias de bucles: while
(condición)
{... } , do {...} until (condicion) y for(contador;
condición; modcont){...}.
Sentencia while
En esta estructura el programa primero comprueba la condición: si
es cierta pasa a ejecutar el cuerpo del bucle, y si es falsa pasa a la instrucción
siguiente a la sentencia while. Como siempre un ejemplo lo aclarará
todo:
var lista = new Array(10);
var ind=0;
while (ind < 10)
{
lista[ind] = '0';
ind++;
}
En este ejemplo mientras que el valor almacenado en ind
sea menor que 10 (la longitud del array ) irá
almacenando en cada elemento del array lista un 0 e incrementando el valor
de ind. Cuando este valor sea 10 el programa
no entrará en el cuerpo del bucle. Si no se incrementara el valor
de ind el bucle no acabaría nunca,
el programa quedaría ejecutando indefinidamente el cuerpo del bucle.
Sentencia do...while
Se trata de un bucle en el que la condición se comprueba tras la
primera iteración, es decir que el cuerpo del bucle se ejecuta al
menos una vez. El ejemplo anterios quedaría como sigue
var lista = new Array(10);
var ind=0;
do
lista[ind] = '0';
ind++;
while (ind < 10)
Como vemos aquí no son imprescindibles las llaves para encerar el
cuerpo del bucle. No está contemplada en el standard ECMA 1.5.
Sentencia for
Esta sentencia utiliza una variable de control a modo de contador para controlar
la repetición del cuerpo del bucle. La sentencia da un valor inicial
a este contador y en cada iteración lo modifica según le indiquemos
y comprueba la condición, si se cumple ejecuta el cuerpo del bucle,
si no lo salta y continúa por la siguiente sentencia. Vemoas el ejemplo
anterior usando esta sentencia:
var lista = new Array(10);
var ind;
for (ind=0; ind < 10; ind++)
{
lista[ind] = '0';
}
Como vemos el cuerpo del bucle no incrementa la variable ind,
esto se indica en la cabecera de la sentencia. Este código hace exactamente
lo mismo que el anterior.
Sentencia for ... in
Se trata de una variante de la sentencia for
utilizada para iterar o recorrer todos los elementos de un objeto o de un
array. Usa una variable de control que en cada iteración toma el
valor del elemento del objeto recorrido. Por ejemplo si pruebas este código
podrás ver todos los elementos del objeto document
var item;
for (item in document)
document.write(item+'<br>');
Con una matriz la variable de control toma el valor de los índices
de la matriz, no su contenido.
|