Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnología web para desarrolladores
  2. JavaScript
  3. Referencia de JavaScript
  4. Sentencias
  5. switch

Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.

View in EnglishAlways switch to English

switch

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨julio de 2015⁩.

Ladeclaraciónswitch evalúa unaexpresión, comparando el valor de esa expresión con una instanciacase, y ejecutadeclaraciones asociadas a esecase, así como las declaraciones en loscase que siguen.

Syntaxis

switch (expresión) {  case valor1:    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor1    [break;]  case valor2:    //Declaraciones ejecutadas cuando el resultado de expresión coincide con el valor2    [break;]  ...  case valorN:    //Declaraciones ejecutadas cuando el resultado de expresión coincide con valorN    [break;]  default:    //Declaraciones ejecutadas cuando ninguno de los valores coincide con el valor de la expresión    [break;]}
expresión

Es una expresión que es comparada con el valor de cada instanciacase.

case valorN

Una instanciacase valorN es usada para ser comparada con laexpresión. Si laexpresión coincide con elvalorN, las declaraciones dentro de la instanciacase se ejecutan hasta que se encuentre el final de la declaraciónswitch o hasta encontrar una interrupciónbreak.

default

Una instanciadefault, cuando es declarada, es ejecutada si el valor de laexpresión no coincide con cualquiera de las otras instanciascase valorN.

Descripción

Si ocurre una coincidencia, el programa ejecuta las declaraciones asociadas correspondientes. Si la expresión coincide con múltiples entradas, la primera será la seleccionada, incluso si las mayúsculas son tenidas en cuenta.

El programa primero busca la primer instaciacase cuya expresión se evalúa con el mismo valor de la expresión de entrada (usandocomparación estricta,===) y luego transfiere el control a esa cláusula, ejecutando las declaraciones asociadas. Si no se encuentra una cláusula decase coincidente, el programa busca la cláusuladefault opcional, y si se encuentra, transfiere el control a esa instancia, ejecutando las declaraciones asociadas. Si no se encuentra una instanciadefault el programa continúa la ejecución en la instrucción siguiente al final delswitch. Por convención, la instanciadefault es la última cláusula, pero no tiene que ser así.

La declaraciónbreak es opcional y está asociada con cada etiqueta decase y asegura que el programa salga delswitch una vez que se ejecute la instrucción coincidente y continúe la ejecución en la instrucción siguiente. Si se omite elbreak el programa continúa la ejecución en la siguiente instrucción en la declaración deswitch .

Ejemplos

Usandoswitch

En el siguiente ejemplo, siexpresión se resuelve a "Platanos", el algoritmo compara el valor con elcase "Platanos" y ejecuta la declaración asociada. Cuando se encuentra unbreak, el programa sale del condicionalswitch y ejecuta la declaración que lo procede. Si se omite elbreak, elcase "Cerezas" también es ejecutado.

js
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 más que te quisiera consultar?");

¿Qué pasa si olvido un break?

Si olvidas unbreak, el script se ejecutará desde donde se cumple la condición y ejecutará el siguientecase independientemente si esta condición se cumple o no. Ver el siguiente ejemplo:

js
var foo = 0;switch (foo) {  case -1:    console.log("1 negativo");    break;  case 0: // foo es 0, por lo tanto se cumple la condición y se ejecutara el siguiente bloque    console.log(0);  // NOTA: el "break" olvidado debería estar aquí  case 1: // No hay sentencia "break" en el 'case 0:', por lo tanto este caso también 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");}

¿Puedo usar un <default> entre condiciones?

Sí, ¡es posible! JavaScript retornará a la instanciadefault en caso de no encontrar una coincidencia:

js
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 elcase 1: a continuación dedefault, y al no haber unbreak de por medio, veremos que la declaración delcase 1: será ejecutada, apareciendo el resultado1 en ellog de consola.

Metodos para casos con múltiple criterio

La fuente de esta técnica esta aquí:

Switch statement multiple cases in JavaScript (Stack Overflow)

Operación única con múltiples casos

Este método toma ventaja del hecho de que, si no hay unbreak debajo de una declaracióncase, continuará la ejecución hasta el siguientecase, ignorando si en dicho caso se cumple o no el criterio indicado. Comprobar en la sección¿Qué pasa si olvido unbreak?

Este es un ejemplo de operación única con sentenciaswitch secuencial, donde cuatro valores diferentes se comportan exactamente de la misma manera:

js
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á.");}

Operaciones encadenadas con múltiples casos

Este es un ejemplo de una sentenciaswitch secuencial con múltiples 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 declaracionescase, y que no tiene que ser numéricamente secuencial. En JavaScript, también es posible combinar definiciones con valores"string" dentro de estas declaracionescase.

js
var foo = 1;var output = "Salida: ";switch (foo) {  case 10:    output += "¿Y ";  case 1:    output += "Cuál ";    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:

ValueLog text
foo es NaN o no es 1, 2, 3, 4, 5 ni 10Por favor, selecciona un valor del 1 al 6.
10Salida: ¿Y Cuál Es Tu Nombre?
1Salida: Cuál Es Tu Nombre?
2Salida: Tu Nombre?
3Salida: Nombre?
4Salida: ?
5Salida: !

Especificaciones

Specification
ECMAScript® 2026 Language Specification
# sec-switch-statement

Compatibilidad con navegadores

Ver también

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp