| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/switch | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since julio de 2015.
La declaracin switch evala una expresin, comparando el valor de esa expresin con una instancia case, y ejecuta declaraciones asociadas a ese case, as como las declaraciones en los case que siguen.
switch (expresin) {
case valor1:
//Declaraciones ejecutadas cuando el resultado de expresin coincide con el valor1
[break;]
case valor2:
//Declaraciones ejecutadas cuando el resultado de expresin coincide con el valor2
[break;]
...
case valorN:
//Declaraciones ejecutadas cuando el resultado de expresin coincide con valorN
[break;]
default:
//Declaraciones ejecutadas cuando ninguno de los valores coincide con el valor de la expresin
[break;]
}
expresinEs una expresin que es comparada con el valor de cada instancia case.
case valorNUna instancia case valorN es usada para ser comparada con la expresin. Si la expresin coincide con el valorN, las declaraciones dentro de la instancia case se ejecutan hasta que se encuentre el final de la declaracin switch o hasta encontrar una interrupcin break.
defaultUna instancia default, cuando es declarada, es ejecutada si el valor de la expresin no coincide con cualquiera de las otras instancias case valorN.
Si ocurre una coincidencia, el programa ejecuta las declaraciones asociadas correspondientes. Si la expresin coincide con mltiples entradas, la primera ser la seleccionada, incluso si las maysculas son tenidas en cuenta.
El programa primero busca la primer instacia case cuya expresin se evala con el mismo valor de la expresin de entrada (usando comparacin estricta, ===) y luego transfiere el control a esa clusula, ejecutando las declaraciones asociadas. Si no se encuentra una clusula de case coincidente, el programa busca la clusula default opcional, y si se encuentra, transfiere el control a esa instancia, ejecutando las declaraciones asociadas. Si no se encuentra una instancia default el programa contina la ejecucin en la instruccin siguiente al final del switch. Por convencin, la instancia default es la ltima clusula, pero no tiene que ser as.
La declaracin break es opcional y est asociada con cada etiqueta de case y asegura que el programa salga del switch una vez que se ejecute la instruccin coincidente y contine la ejecucin en la instruccin siguiente. Si se omite el break el programa contina la ejecucin en la siguiente instruccin en la declaracin de switch .
switchEn el siguiente ejemplo, si expresin se resuelve a "Platanos", el algoritmo compara el valor con el case "Platanos" y ejecuta la declaracin asociada. Cuando se encuentra un break, el programa sale del condicional switch y ejecuta la declaracin que lo procede. Si se omite el break, el case "Cerezas" tambin es ejecutado.
switch (expr) {
case "Naranjas":
console.log("El kilogramo de naranjas cuesta $0.59.");
break;
case "Manzanas":
console.log("El kilogramo de manzanas cuesta $0.32.");
break;
case "Platanos":
console.log("El kilogramo de platanos cuesta $0.48.");
break;
case "Cerezas":
console.log("El kilogramo de cerezas cuesta $3.00.");
break;
case "Mangos":
case "Papayas":
console.log("El kilogramo de mangos y papayas cuesta $2.79.");
break;
default:
console.log("Lo lamentamos, por el momento no disponemos de " + expr + ".");
}
console.log("Hay algo ms que te quisiera consultar?");
Si olvidas un break, el script se ejecutar desde donde se cumple la condicin y ejecutar el siguiente case independientemente si esta condicin se cumple o no. Ver el siguiente ejemplo:
var foo = 0;
switch (foo) {
case -1:
console.log("1 negativo");
break;
case 0: // foo es 0, por lo tanto se cumple la condicin y se ejecutara el siguiente bloque
console.log(0);
// NOTA: el "break" olvidado debera estar aqu
case 1: // No hay sentencia "break" en el 'case 0:', por lo tanto este caso tambin ser ejecutado
console.log(1);
break; // Al encontrar un "break", no ser ejecutado el 'case 2:'
case 2:
console.log(2);
break;
default:
console.log("default");
}
S, es posible! JavaScript retornar a la instancia default en caso de no encontrar una coincidencia:
var foo = 5;
switch (foo) {
case 2:
console.log(2);
break; // al encontrar este 'break' no se continuar con el siguiente 'default:'
default:
console.log("default");
// fall-through
case 1:
console.log("1");
}
Al estar el case 1: a continuacin de default, y al no haber un break de por medio, veremos que la declaracin del case 1: ser ejecutada, apareciendo el resultado 1 en el log de consola.
La fuente de esta tcnica esta aqu:
Switch statement multiple cases in JavaScript (Stack Overflow)
Este mtodo toma ventaja del hecho de que, si no hay un break debajo de una declaracin case, continuar la ejecucin hasta el siguiente case, ignorando si en dicho caso se cumple o no el criterio indicado. Comprobar en la seccin Qu pasa si olvido un break?
Este es un ejemplo de operacin nica con sentencia switch secuencial, donde cuatro valores diferentes se comportan exactamente de la misma manera:
var Animal = "Jirafa";
switch (Animal) {
case "Vaca":
case "Jirafa":
case "Perro":
case "Cerdo":
console.log("Este animal subir al Arca de No.");
break;
case "Dinosaurio":
default:
console.log("Este animal no lo har.");
}
Este es un ejemplo de una sentencia switch secuencial con mltiples operaciones, donde, dependiendo del valor entero dado, se pueden recibir diferentes resultados. Esto demuestra que el algoritmo correr en el orden en que se coloquen las declaraciones case, y que no tiene que ser numricamente secuencial. En JavaScript, tambin es posible combinar definiciones con valores "string" dentro de estas declaraciones case.
var foo = 1;
var output = "Salida: ";
switch (foo) {
case 10:
output += "Y ";
case 1:
output += "Cul ";
output += "Es ";
case 2:
output += "Tu ";
case 3:
output += "Nombre";
case 4:
output += "?";
console.log(output);
break;
case 5:
output += "!";
console.log(output);
break;
default:
console.log("Por favor, selecciona un valor del 1 al 6.");
}
La salida (output) de este ejemplo:
| Value | Log text |
|---|---|
| foo es NaN o no es 1, 2, 3, 4, 5 ni 10 | Por favor, selecciona un valor del 1 al 6. |
| 10 | Salida: Y Cul Es Tu Nombre? |
| 1 | Salida: Cul Es Tu Nombre? |
| 2 | Salida: Tu Nombre? |
| 3 | Salida: Nombre? |
| 4 | Salida: ? |
| 5 | Salida: ! |
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-switch-statement |
This page was last modified on 24 jun 2025 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |