La expresión base del control de flujo es:
if(expresión) instrucción
[else instrucción]...
donde la expresión es booleana, es decir, puede asumir los valores true o
false. La instrucción principal puede ir seguida de else, que indica
una instrucción alternativa que se ejecutará cuando la primera no se haya
verificado.
Si hay que efectuar una serie de test se puede iterar el else de
esta manera:
if (expresión) {instrucción}
else (expresión) {instrucción}
else (expresión) {instrucción}
else (expresión) {instrucción}.
else instrucción
donde se evalúa la expresión junto a else, que se ejecuta si
la expresión es verdadera. En caso contrario, se ejecuta el else
final.
Una alternativa de la anterior es la instrucción switch.
Su forma sintáctica es:
switch (expresión) {
case constante1: instrucciones
break;
case constante 2: instrucciones
break;
....
default instrucciones
}
El valor de la expresión se compara con los diversos valores de los case
y cuando se encuentra una correspondencia, se ejecuta la instrucción o las
secuencias de instrucciones asociadas, aun cuando al case esté asociado
un statement vacío o bien un ulterior switch. La instrucción de default
es opcional y se ejecuta sólo si no se ha encontrado correspondencia. La
instrucción break es opcional, en cuanto permite sólo que el programa salga
del ciclo de switch, por lo que si no apareciera el programa continuaría
comparando el valor.
Muy válida también la expresión condicional ternario que funde el if...else
en un único comando, que es el ?, también conocido como
operador ternario.Su forma es (prestad atención a los dos puntos):
Expresión1 ? Expresión2
:Expresión3
donde si es verdad la primera expresión, se ejecuta la segunda; si es falsa,
se ejecuta la tercera. Obsérvese el ejemplo:
"He encontrado", counter,
(counter==1)?"palabra.":"palabras."
donde si x es mayor que 9 a y se le asignará el valor 100; en otro caso, se le
asignará el valor 200.
Un ejemplo muy elegante de operador ternario es el que sirve para determinar
el navegador utilizado:
ie=document.all?1:0
n=document.layers?1:0
las expresiones se leen así: Explorer sabe interpretar el comando
document.all, Netscape sabe interpretar document.layers y no
viceversa, por lo que si el navegador interpreta el comando, entonces será
la variable ie o bien n igual a 1.