switch (Instrucción)
Permite la ejecución de una o más instrucciones cuando el valor de una expresión especificada coincide con una etiqueta.
switch (expression) {
case label1 :
[statementlist1]
[break;]
[ ...
[ case labelN :
[statementlistN]
[break;] ] ]
[ default :
[statementlistDefault]]
}
Argumentos
expression
Obligatorio. Expresión que se va a evaluar.label1, ..., labelN
Obligatorio. Identificador con el que se compara expression. Si label === expression, la ejecución comienza con la lista de instrucciones inmediatamente después de los dos puntos y continúa hasta que se encuentra con una instrucción break, que es opcional, o con el final de la instrucción switch .statementlist1, ..., statementlistN, statementlistDefault
Opcional. Instrucción o instrucciones que se van a ejecutar.
Comentarios
Utilice la cláusula default para proporcionar una instrucción que se ejecute en caso de que ninguno de los valores de las etiquetas coincida con expression. Puede incluirse en cualquier parte del bloque de código de la instrucción switch.
Se pueden especificar cero o más bloques label. Si ninguno de los argumentos label coincide con el valor de expression y no se proporciona una cláusula default, no se ejecuta ninguna instrucción.
El flujo de la ejecución a lo largo de una instrucción switch procede de la siguiente manera:
Evalúa expression y examina label por orden hasta encontrar una coincidencia.
Si el valor de un argumento label es igual al de expression, ejecuta la lista de instrucciones que le acompaña.
La ejecución continúa hasta que se encuentra una instrucción break, o hasta que la instrucción switch finaliza. Esto implica la ejecución de varios bloques label si no se utiliza una instrucción break.
Si no hay ningún argumento label igual al argumento expression, pasa a la cláusula default. Si no hay cláusula default, se dirige al último paso.
La ejecución continúa en la instrucción que sigue al final del bloque de código de la instrucción switch.
Ejemplo
En el siguiente ejemplo de ASP.NET se comprueba el tipo de un objeto. En este caso, sólo se utiliza un tipo pero se puede ver claramente cómo funciona la función con otros tipos de objetos.
<%@ language="jscript" %>
<%
var d = new Number();
function MyObjectType(obj : Object) : String {
switch (obj.constructor){
case Date:
return "Object is a Date.";
break;
case Number:
return "Object is a Number.";
break;
case String:
return "Object is a String.";
break;
default:
return "Object is unknown.";
}
}
Response.Write(MyObjectType(d));
%>