Skip to content

Lección 16: switch

switch es una estructura condicional que evalúa una expresión y ejecuta el bloque correspondiente al valor que coincida. Es especialmente útil cuando tienes múltiples condiciones que comparan la misma variable contra valores fijos.

switch (expresion) {
case valor1:
// código si expresion === valor1
break;
case valor2:
// código si expresion === valor2
break;
default:
// código si no hay coincidencia
}
  1. JavaScript evalúa la expresión del switch.
  2. Compara (con ===, estricta) contra cada case.
  3. Si encuentra coincidencia, ejecuta el código hasta encontrar break.
  4. Si no hay break, continúa al siguiente caso (esto se llama fall-through).
  5. Si ningún case coincide, ejecuta default.

Sin break, el programa sigue ejecutando los siguientes casos aunque no coincidan:

let fruta = 'manzana';
switch (fruta) {
case 'manzana':
console.log('Es una manzana');
// sin break → continúa
case 'pera':
console.log('Es una pera');
break;
}
// Salida:
// "Es una manzana"
// "Es una pera" (¡se ejecutó aunque fruta no era 'pera'!)
let dia = 3;
let nombreDia;
switch (dia) {
case 1:
nombreDia = 'Lunes';
break;
case 2:
nombreDia = 'Martes';
break;
case 3:
nombreDia = 'Miércoles';
break;
case 4:
nombreDia = 'Jueves';
break;
case 5:
nombreDia = 'Viernes';
break;
case 6:
nombreDia = 'Sábado';
break;
case 7:
nombreDia = 'Domingo';
break;
default:
nombreDia = 'Día inválido';
}
console.log(`El día ${dia} es ${nombreDia}`);
// Fall-through intencional: casos agrupados
let tipoUsuario = 'admin';
switch (tipoUsuario) {
case 'admin':
case 'superadmin':
console.log('Acceso total al sistema');
break;
case 'editor':
console.log('Acceso a contenido');
break;
case 'usuario':
console.log('Acceso básico');
break;
default:
console.log('Acceso denegado');
}
  1. Crea un archivo switch.js.
  2. Declara una variable rol con valores: 'admin', 'mod', 'user', 'guest'.
  3. Usa switch para mostrar los permisos de cada rol:
    • admin: “Acceso total: crear, leer, actualizar, eliminar”
    • mod: “Acceso moderador: leer, actualizar”
    • user: “Acceso básico: leer”
    • guest: “Acceso limitado”
    • default: “Rol desconocido”
  4. Añade un caso agrupado donde ‘admin’ y ‘superadmin’ tengan los mismos permisos.
let rol = 'admin';
switch (rol) {
case 'superadmin':
case 'admin':
console.log('✅ Acceso total: crear, leer, actualizar, eliminar');
break;
case 'mod':
console.log('📝 Acceso moderador: leer, actualizar');
break;
case 'user':
console.log('👁️ Acceso básico: leer');
break;
case 'guest':
console.log('🔒 Acceso limitado');
break;
default:
console.log('❌ Rol desconocido');
}

switch usa comparación estricta (===), no abstracta (==). Esto significa que switch('5') no coincidirá con case 5 porque string ≠ number.

switch ('5') {
case 5:
console.log('No me ejecuto'); // nunca
break;
case '5':
console.log('Coincidencia exacta'); // este sí
}

Usa switch cuando tengas muchos casos comparando la misma variable. Para condiciones simples (menos de 3-4 casos), if/else suele ser más legible. El switch brilla con 4+ casos o cuando hay agrupaciones de casos (fall-through intencional).