Ir directamente al contenido de esta página
Un script consiste en una lista de enunciados que se van ejecutando a medida que se cargan. Sin embargo, en ocasiones nos interesa controlar el flujo de la ejecución estableciendo alternativas, es decir, que una serie de enunciados se ejecuten en algunas ocasiones y en otras no. Para permitir esto existen las estructuras condicionales.
if … else
Por medio de if
se puede indicar una condición que, de cumplirse, permite la ejecución de uno o más enunciados. Por medio de else
se puede establecer una alternativa, aunque su uso es opcional.
La sintaxis de esta estructura es la siguiente:
if(condición){
…enunciados a ejecutar si se cumple la condición…
} else {
…enunciados a ejecutar si NO se cumple la condición…
}
Por ejemplo, supongamos que queremos lanzar una advertencia si el valor de una variable es mayor que 100, y otra si es mayor:
if (variable_a_comparar>100){
alert("El valor de la variable es mayor que 100");
} else {
alert("El valor de la variable es menor o igual que 100");
}
Además, las instrucciones se pueden concatenar:
if (variable_a_comparar>100){
alert("El valor de la variable es mayor que 100");
} else if (variable_a_comparar==100){
alert("El valor de la variable es exactamente 100");
} else {
alert("El valor de la variable es menor que 100");
}
Se pueden concatenar tantos else if
como se quiera, pero cuando se trata de analizar el valor de una variable suele ser más efectivo emplear la estructura condicional que veremos a continuación.
switch
Por medio de switch
se puede listar una serie de bloques de enunciados que se ejecuten dependiendo del valor de una variable.
La sintaxis sería:
switch (variable){
case(valor1):
…enunciados a ejecutar para ese valor…
break;
case(valor2):
…enunciados a ejecutar para ese valor…
break;
case(valor3):
…enunciados a ejecutar para ese valor…
break;
default:
…enunciados a ejecutar cuando el valor no
coincida con ninguno de los anteriores…
break;
}
Por ejemplo, supongamos que analizamos el valor de una variable y que dependiendo de éste lanzamos un mensaje de alerta:
switch (nombrePersonaje){
case('Harry Mason'):
alert('El protagonista del primer «Silent Hill»');
break;
case('James Sunderland'):
alert('El protagonista de «Silent Hill 2»');
break;
case('Maria'):
alert('Protagonista de «Silent Hill 2: Born from a Wish»');
break;
case('Heather Mason'):
alert('Protagonista de «Silent Hill 3», hija de Harry Mason');
break;
case('Henry Townshend'):
alert('Protagonista de «Silent Hill 4: The Room»');
break;
case('Travis Grady'):
alert('Protagonista de «Silent Hill Origins»');
break;
default:
alert('El nombre no corresponde a ningún protagonista de «Silent Hill»');
break;
}
break
indica que el bloque de código puede dejar de interpretarse cuando se haya dado una coincidencia.
La especificación de default:
es opcional. En este caso, si no se emplease simplemente no se lanzaría ninguna alerta en caso de que el valor de nombrePersonaje no coincidiese con ninguno de los nombres recogidos en switch
.
Los operadores lógicos amplian las posibilidades de establecer condiciones. Son:
Operador | Significado | Sintaxis |
---|---|---|
! |
Negación |
|
&& |
Y |
|
|| |
O |
|
En el caso de !
, se emplea cuando lo que se quiere comprobar no es la existencia de un objeto o variable, sino su no existencia. Por ejemplo, si queremos comprobar que no existe la variable a porque no ha sido declarada, el código sería:
if (!a){
…lo que se desee hacer en caso de su no existencia…
}
Para los otros dos operadores —&&
y ||
—, cada condición que se quiera establecer debe ir entre paréntesis. Por ejemplo, la siguiente condición:
if(((a/2)>0)&&((a%2)==0)) { alert("El número es un par positivo."); }
haría que sólo se mostrase la alerta en caso de que a sea eso, un número par positivo.
Ejemplos concretos de estas estructuras condicionales los veremos conjuntamente con los ejemplos de la sección sobre funciones.