La estructura switch en JavaScript te permite elegir entre múltiples casos definidos, como si seleccionaras un plato de un menú. Es ideal cuando necesitas evaluar una sola expresión contra varios valores específicos y ejecutar bloques de código distintos según coincida cada uno.
A diferencia de if else, que evalúa condiciones abiertas y dinámicas, switch trabaja mejor cuando tienes un conjunto cerrado de opciones. Piensa en los días de la semana, los niveles de un usuario o las categorías de un producto.
¿Cuál es la anatomía de un switch en JavaScript?
Antes de escribir tu primer bloque, conviene entender cada pieza que lo compone porque cada palabra reservada cumple una función puntual.
La estructura básica usa estas piezas:
- switch: palabra reservada que inicializa el bloque y recibe la expresión a evaluar.
- case: define cada valor posible de la expresión, seguido de dos puntos (no punto y coma).
- break: corta la ejecución para que el flujo no caiga al siguiente case.
- default: bloque que se ejecuta cuando ningún case coincide con la expresión.
¿Por qué se usa break en switch? Porque sin break, JavaScript sigue ejecutando los case siguientes aunque ya haya encontrado una coincidencia. El break detiene el flujo y sale del bloque.
¿Cómo se escribe un switch para los días de la semana?
El ejemplo clásico para entender switch es clasificar días laborales y fines de semana. Comienza creando una constante con el día y luego pásala como expresión al switch.
javascript
const dia = "lunes";
switch (dia) {
case "lunes":
case "martes":
case "miércoles":
case "jueves":
case "viernes":
console.log("Día laboral");
break;
case "sábado":
case "domingo":
console.log("Fin de semana");
break;
default:
console.log("Día no válido");
}
Fíjate en algo interesante: los case de lunes a jueves no tienen código propio, así que el flujo cae hasta el console.log de viernes. Este comportamiento se llama fallthrough y es útil cuando varios valores comparten la misma respuesta.
Si cambias dia a "martes" y ejecutas el bloque, la salida sigue siendo "Día laboral" porque todos los días laborales se agrupan en el mismo bloque de ejecución.
¿Cómo darle un mensaje único a cada case?
Si quieres que cada día imprima algo distinto, agrega su propio console.log y su break dentro del case.
javascript
case "lunes":
console.log("Hoy es lunes");
break;
Así, al llamar a "lunes", entrarás directamente en esa condición y verás el mensaje específico antes de salir del bloque.
¿Cuándo usar switch y cuándo if else?
La elección entre ambas estructuras depende del tipo de decisión que necesites tomar. Cada una tiene su terreno donde brilla.
- Usa if else cuando manejas condiciones abiertas, comparaciones con rangos o múltiples expresiones combinadas (por ejemplo: si llueve y hace frío).
- Usa switch cuando evalúas una sola expresión contra valores específicos y conocidos, como un día, un estado o una categoría.
- Evita switch si tu lista de casos crece sin control: tener 30 case para los días del mes no es lógica estructurada, es repetición innecesaria.
¿Switch puede manejar múltiples condiciones a la vez? No. Switch solo evalúa una expresión contra valores exactos. Si necesitas combinar condiciones (como rangos o múltiples variables), if else es la herramienta correcta.
La clave está en el pensamiento estructurado: antes de escribir código, pregúntate si tu problema realmente se resuelve eligiendo entre opciones cerradas o si requiere una lógica más flexible. Repetir código es la salida fácil; diseñar bien es lo que hace la diferencia.
Más adelante vas a profundizar en patrones de diseño, implementación y arquitectura que te ayudarán a tomar estas decisiones con criterio. Por ahora, practica con los retos de la sección de recursos y comparte tus soluciones en los comentarios para que toda la comunidad aprenda contigo.