Command Palette

Search for a command to run...

Condicional switch

La sentencia switch permite evaluar una expresión contra múltiples casos posibles, ofreciendo una alternativa más legible que múltiples if-else cuando comparas un mismo valor contra varias opciones.

Lectura: 10 min
Nivel: Principiante

TL;DR - Resumen rápido

  • switch evalúa una expresión contra múltiples casos (case)
  • break detiene la ejecución y evita el fall-through
  • default ejecuta código cuando ningún case coincide
  • Múltiples cases pueden compartir el mismo bloque de código
  • switch usa comparación estricta (===) para evaluar casos
  • Es más legible que if-else cuando comparas un valor contra muchas opciones
  • El fall-through puede ser útil pero también una fuente de bugs

¿Qué es switch?

La sentencia switch es una estructura de control que evalúa una expresión y ejecuta el bloque de código correspondiente al caso (case) que coincida. Es especialmente útil cuando necesitas comparar una misma variable o expresión contra múltiples valores posibles.

A diferencia de if-else, switch hace el código más legible cuando tienes muchas comparaciones de igualdad contra el mismo valor. En lugar de escribir if (dia === "lunes") {} else if (dia === "martes") {} repetidamente, switch lo estructura de forma más clara.

Sintaxis básica

La estructura básica de switch consiste en la palabra clave switch, la expresión a evaluar entre paréntesis, y múltiples bloques case que representan los valores posibles. Cada case termina con break para evitar que se ejecuten los casos siguientes.

switch-basico.js
Loading code...

En este ejemplo, switch evalúa la variable dia. Cuando encuentra un case que coincide (usando comparación estricta ===), ejecuta el código de ese bloque. El break al final de cada caso detiene la ejecución y sale del switch. Sin break, JavaScript continuaría ejecutando los casos siguientes, un comportamiento llamado "fall-through".

Break y fall-through

El break es crucial en switch porque detiene la ejecución y previene que se ejecuten los casos siguientes. Sin break, JavaScript ejecuta todos los casos después del que coincide hasta encontrar un break o llegar al final del switch, un comportamiento llamado "fall-through".

break-fall-through.js
Loading code...

El ejemplo muestra dos casos: sin break, después de ejecutar el código de case 2, JavaScript continúa ejecutando case 3 y default hasta salir del switch. Con break, se detiene inmediatamente después del caso que coincide. El fall-through puede ser útil en ciertos casos, pero generalmente es una fuente de bugs y debe evitarse salvo que sea intencional.

Siempre usa break

Omitir break causa fall-through: el código ejecuta todos los casos siguientes hasta encontrar un break. Esto raramente es intencional y suele ser un bug difícil de detectar.

Múltiples cases para un mismo bloque

Cuando varios valores deben ejecutar el mismo código, puedes apilar múltiples case sin código entre ellos. Esto aprovecha el fall-through de forma intencional y evita duplicar código para valores que requieren la misma acción.

case-multiples.js
Loading code...

Al apilar case sin break entre ellos, todos esos valores ejecutan el mismo bloque de código. En el ejemplo, tanto "sábado" como "domingo" ejecutan el código de fin de semana. Esto es más limpio que usar operadores lógicos (||) en un if cuando tienes muchos valores agrupados.

El case default

El default es opcional y se ejecuta cuando ningún case coincide con la expresión evaluada. Funciona como el else en una cadena if-else, manejando todos los casos no especificados explícitamente.

default-case.js
Loading code...

El default puede colocarse en cualquier posición del switch, pero convencionalmente se pone al final. No requiere break si está al final, pero es buena práctica incluirlo por consistencia. Úsalo para manejar valores inesperados o proporcionar un comportamiento por defecto cuando ninguna opción específica aplica.

Default para valores inesperados

Usa default para validar entrada y manejar casos no previstos. Es una buena práctica incluirlo incluso si crees que has cubierto todos los casos posibles.

switch vs if-else

Tanto switch como if-else permiten ejecutar código condicionalmente, pero cada uno tiene casos de uso donde brilla. Entender cuándo usar cada uno mejora la legibilidad y mantenibilidad de tu código.

switch-vs-if-else.js
Loading code...

Usa switch cuando compares un valor contra múltiples opciones discretas (igualdad estricta). Usa if-else cuando necesites condiciones complejas, rangos, operadores de comparación (>, <), o lógica booleana. El ejemplo muestra que switch es más claro para casos múltiples de igualdad, mientras if-else es necesario para comparaciones de rango.

Elige según el caso de uso

Usa switch para comparaciones de igualdad múltiples contra un mismo valor. Usa if-else para condiciones complejas, rangos o lógica booleana.

Comparación estricta en switch

El switch usa comparación estricta (===) para evaluar cada caso, lo que significa que tanto el valor como el tipo deben coincidir. Esto puede causar comportamientos inesperados si no tienes cuidado con los tipos de datos.

strict-comparison.js
Loading code...

A diferencia de if con ==, switch no hace coerción de tipos. En el ejemplo, valor = "2" (string) no coincide con case 2 (number) porque son tipos diferentes. Esto previene bugs sutiles de coerción, pero requiere que seas explícito con tus tipos. Si recibes strings de un formulario, conviértelos primero con Number() o parseInt().

Ten cuidado con los tipos

switch usa ===, no ==. El string "2" no coincidirá con el number 2. Convierte tipos explícitamente si es necesario.

Casos prácticos

Veamos ejemplos reales de cómo usar switch en situaciones comunes de desarrollo, desde manejo de comandos hasta cálculo de valores basados en opciones.

casos-practicos.js
Loading code...

Los casos prácticos muestran tres aplicaciones reales: obtener días en un mes (usando cases múltiples para meses con la misma cantidad de días), procesar comandos de usuario con valores de retorno directos, y mapear valores de estado a descripciones. Cada caso aprovecha las fortalezas de switch: comparaciones múltiples de igualdad contra un mismo valor con código claro y estructurado.

Resumen

Resumen: Condicional switch

Conceptos principales:

  • switch evalúa una expresión contra múltiples cases
  • break detiene la ejecución y previene fall-through
  • default maneja casos no especificados (como else)
  • Múltiples cases pueden compartir el mismo código
  • Usa comparación estricta (===) sin coerción de tipos

Mejores prácticas:

  • Usa switch para múltiples comparaciones de igualdad
  • Siempre incluye break salvo fall-through intencional
  • Agrega default para manejar valores inesperados
  • Prefiere if-else para rangos o condiciones complejas
  • Ten cuidado con tipos: string '2' ≠ number 2