Estructuras de control: Condicionales SWITCH
Hasta ahora hemos visto que podemos utilizar if, else y else if para tomar decisiones.
Sin embargo, existe otra estructura que resulta muy útil cuando necesitamos comparar una misma variable con varios valores posibles.
Para ello utilizamos switch.
Imagina el siguiente ejemplo:
- Si el usuario selecciona el idioma español, mostraremos un mensaje en español.
- Si selecciona inglés, mostraremos el mensaje en inglés.
- Si selecciona francés, lo mostraremos en francés.
Podríamos hacerlo con varios else if, pero switch hace que el código sea más limpio y fácil de leer.
¿Cuándo utilizar switch?
Utiliza switch cuando:
- Quieras comparar una misma variable con diferentes valores.
- Tengas muchas opciones posibles.
- Quieras que el código sea más legible.
Por el contrario, si las condiciones utilizan operadores como >, < o >=, normalmente es mejor utilizar if.
💡 Consejo
Una regla sencilla es:
- Si comparas valores concretos, utiliza
switch.- Si comparas condiciones, utiliza
if.
Sintaxis
La estructura básica es la siguiente:
switch (variable) {
case valor1:
// Código A
break;
case valor2:
// Código B
break;
default:
// Código C por defecto
}
Veamos qué significa cada parte.
switchindica que vamos a comparar una variable.- Cada
caserepresenta uno de los posibles valores. breakfinaliza ese caso y evita que el programa continúe ejecutando los siguientes.defaultse ejecuta cuando ninguno de los casos anteriores coincide.
Podríamos decir que sería el código equivalente a utilizar if:
if (variable === valor1) {
// Código A
}else if (variable === valor2){
// Código B
}else{
// Código C por defecto
}
Diagrama de funcionamiento
switch
│
Valor de variable
│
┌────────┼────────┐
│ │ │
case A case B case C
│ │ │
└────────┴────────┘
│
default
Primer ejemplo
Supongamos que queremos mostrar el nombre de un día de la semana.
let dia = 3;
switch (dia) {
case 1:
console.log("Lunes");
break;
case 2:
console.log("Martes");
break;
case 3:
console.log("Miércoles");
break;
case 4:
console.log("Jueves");
break;
case 5:
console.log("Viernes");
break;
default:
console.log("Fin de semana");
}
Resultado:
Miércoles
¿Qué hace break?
Una de las palabras más importantes dentro de un switch es break.
Cuando JavaScript encuentra un break, sale inmediatamente del switch.
let numero = 2;
switch (numero) {
case 1:
console.log("Uno");
break;
case 2:
console.log("Dos");
break;
case 3:
console.log("Tres");
break;
}
Resultado:
Dos
¿Qué ocurre si olvidamos el break?
Si no escribimos break, JavaScript continúa ejecutando los siguientes casos.
let numero = 2;
switch (numero) {
case 1:
console.log("Uno");
case 2:
console.log("Dos");
case 3:
console.log("Tres");
}
Resultado:
Dos
Tres
¿Por qué también aparece Tres?
Porque, al no encontrar un break, JavaScript sigue ejecutando el resto de los casos.
Importante: Uno de los errores más habituales al comenzar a utilizar
switches olvidar escribirbreak.
El bloque default
El bloque default funciona de forma parecida al else de una estructura if.
Se ejecuta cuando ninguno de los casos anteriores coincide.
let color = "amarillo";
switch (color) {
case "rojo":
console.log("Detenerse");
break;
case "verde":
console.log("Avanzar");
break;
default:
console.log("Color desconocido");
}
Resultado:
Color desconocido
Ejemplo 1: Semáforo
let color = "verde";
switch (color) {
case "rojo":
console.log("Detente.");
break;
case "amarillo":
console.log("Reduce la velocidad.");
break;
case "verde":
console.log("Puedes continuar.");
break;
default:
console.log("Color no válido.");
}
Ejemplo 2: Idiomas
let idioma = "es";
switch (idioma) {
case "es":
console.log("Hola");
break;
case "en":
console.log("Hello");
break;
case "fr":
console.log("Bonjour");
break;
default:
console.log("Idioma no disponible");
}
Agrupar varios casos
En ocasiones queremos que varios valores ejecuten exactamente el mismo código.
No es necesario repetirlo. Simplemente dejamos el caso de arriba "vacío"
let dia = 6;
switch (dia) {
case 6:
case 7:
console.log("Es fin de semana.");
break;
default:
console.log("Es un día laborable.");
}
Resultado:
Es fin de semana.
Este recurso es muy utilizado para evitar repetir código.
switch o if... ¿Cuál debo utilizar?
Las dos estructuras permiten tomar decisiones, pero cada una está pensada para situaciones diferentes.
Utiliza switch cuando...
- Comparas una misma variable.
- Existen muchos valores posibles.
- Todos los casos son valores concretos, es decir, como si siempre fuese una comparacion de
ifde igualdad===.
Por ejemplo:
switch (mes) {
case 1:
case 2:
case 3:
}
Utiliza if cuando...
- Comparas rangos de valores.
- Utilizas operadores como
>,<o>=. - Las condiciones son más complejas.
Por ejemplo:
if (edad >= 18) {
}
o
if (nota >= 5 && asistencia >= 80) {
}
Errores frecuentes
Olvidar el break
❌ Incorrecto
case 1:
console.log("Uno");
case 2:
console.log("Dos");
Repetir el mismo case
❌ Incorrecto
case 1:
...
case 1:
...
Cada caso debe tener un valor diferente.
Utilizar condiciones
Muchos principiantes intentan hacer esto:
switch (edad) {
case edad >= 18:
}
Esto no funciona como esperamos.
Si queremos evaluar condiciones se "mayor que" o "menor que", debemos utilizar if.
Buenas prácticas
✅ Utiliza switch únicamente cuando haga el código más legible.
✅ Escribe siempre un bloque default, aunque solo sea para mostrar un mensaje de error.
✅ No olvides los break.
Resumen
La estructura switch permite comparar una variable con distintos valores posibles de forma clara y ordenada.
Recuerda:
- Cada posibilidad se representa mediante un
case. breakevita que se ejecuten los siguientes casos.defaultactúa como una opción por defecto cuando no existe ninguna coincidencia.