Curso de Javascript 1.2
En esta página:
Estructuras de control
Ningún programa es una secuencia lineal de instrucciones. En todo lenguaje de
programación existen estructuras que nos permiten variar el orden de ejecución
dependiendo de ciertas condiciones. Estas estructuras se pueden clasificar en dos grandes
grupos: bifurcaciones condicionales y bucles.
Aparte de los dos tipos clásicos de estructuras de control, en Javascript disponemos
de algunas estructuras adicionales para facilitar el manejo de objetos. Dispone de algunas
estructuras más de las que explicaremos en esta página (el soporte de etiquetas), pero
debido a que no son más que un recuerdo de lenguajes desfasados y su utilidad resulta
escasa he preferido no incluirlas.
Bifurcaciones condicionales
Una bifurcación condicional en una estructura que realiza una tarea u otra
dependiendo del resultado de evaluar una condición. La primera que vamos a estudiar
es la estructura if...else. Esta estructura es la más
sencilla y antigua (es posible que se utilizara con los ábacos y todo...) de todas:
if (bso.compositor == "Manuel Balboa")
alert(¡Hombre, una banda sonora española!');
else
alert('Seguro que es una americanada');
Hay que indicar que el else es opcional..
La siguiente estructura bifurca según los distintos valores que pueda tomar una
variable específica. Es la sentencia switch:
switch(directorPreferido) {
case "John Ford":
alert('Eso es tener buen gusto, sí señor');
break;
case "Joel Coen":
alert('Parece que te gustan las cosas raras');
break;
default:
alert('¿Y ese quien es?');
}
Hay que indicar que no es compatible con estándar ECMA y no es soportado por el
Explorer 3.
Bucles
Un bucle es una estructura que permite repetir una tarea un número de veces,
determinado por una condición. Para hacer bucles podemos utilizar las estructuras while y do...while. Estos
bucle iteran indefinidamente mientras se cumpla una condición. La diferencia entre ellas
es que la primera comprueba dicha condición antes de realizar cada iteración y la
segunda lo hace después:
var numero=0;
while (numero==1) {
alert('Soy un while');
}
do {
alert('Soy un do...while');
} while (numero==1);
En este caso solo veríamos aparecer un ventana diciendo que es un do...while. ¿Qué por qué? Veamos. El while comprueba primero si numero
es igual a 1 y, como no lo es, no ejecutaría el código que tiene dentro del bucle. En
cambio, el do...while primero ejecuta el código y
luego, viendo que la condición es falsa, saldría. Hay que resaltar que do...while no pertenece al estándar y no es soportado por el
Explorer 3.
En Javascript, el bucle for es singularmente
potente. No se reduce a casos numéricos como en muchos otros lenguajes sino que nos da
mucha más libertad. Tiene la siguiente estructura:
for (inicio; condición; incremento)
código
El código contenido en el bucle se ejecutará mientras la condición
se cumpla. Antes de comenzar la primera iteración del bucle se ejecutará la sentencia inicio y en cada iteración lo hará incremento. La manera más habitual de usar estas
posibilidades es, claro está, la numérica:
var numero = 4;
for (n = 2, factorial = 1; n <= numero; n++)
factorial *= n;
Por último, hay que decir que la ejecución de la sentencia break dentro de cualquier parte del bucle provoca la salida
inmediata del mismo. Aunque a veces no hay más remedio que utilizarlo, es mejor evitarlo
para mejorar la legibilidad y elegancia del código (toma ya, la frase que me ha salido).
Estructuras de manejo de objetos
JavaScript dispone de dos bien distintas. La primera es el bucle for...in, que nos permitirá recorrer todas las propiedades
de un objeto. Se usa principalmente con vectores. Por ejemplo:
var vector = [1, 2, 2, 5];
for (i in vector)
vector[i] += 2;
Este ejemplo sumaría dos a todos los elementos del vector. Sin embargo, conviene tener
cuidado ya que, de los navegadores de Microsoft, sólo la versión 5 lo soporta.
La otra estructura es with, que nos permitirá una
mayor comodidad cuando tengamos que tratar con muyas propiedades de un mismo objeto. En
lugar de tener que referirnos a todas ellas con un objeto.propiedad
podemos hacer:
with (objeto) {
propiedad1 = ...
propiedad2 = ...
...
}
Que resulta más cómodo (tenemos que teclar menos) y legible.
|