|
HTML en castellano recomienda... |
|
|
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.
|