Instrucción switch
if / else brilla cuando la pregunta es sí/no o un rango. A veces la pregunta es otra: ¿cuál de varios valores fijos es? Código de día 1…7, estado "ok" / "warn" / "err", clave de menú. Para esa forma, switch es la herramienta limpia. Ya sabes ramificar; aquí emparejas un valor con varios case etiquetados.
¿Qué hace switch?
switch mira una expresión entre paréntesis. Compara ese valor con cada etiqueta case. Si coincide, ejecuta las sentencias de ese camino. break sale del switch para que no corran los siguientes. default es el respaldo cuando ninguno coincidió.
Las piezas de un vistazo
📊 Piezas cotidianas de switch
| Palabra clave | Lectura cotidiana | Uso típico |
|---|---|---|
switch |
mira este valor… | abrir la elección |
case |
si es igual a esta etiqueta… | una opción fija |
break |
para aquí; sal del switch | terminar tras coincidir |
default |
si nada coincidió… | camino de respaldo |
La coincidencia es de igualdad estricta (idea de ===). Un case numérico no coincide con una cadena de dígitos. Mantén valor y etiquetas con la misma forma.
let day = 3;
switch (day) {
case 1:
console.log("Mon");
break;
case 2:
console.log("Tue");
break;
case 3:
console.log("Wed");
break;
default:
console.log("other");
}
Un valor, varios caminos etiquetados
Aquí day es 3, así que corre el camino case 3 y la Consola imprime Wed. Se revisaron y saltaron los cases 1 y 2. Tras break el switch termina — default no corre.
Sin break, JavaScript seguiría entrando en los cuerpos de los siguientes cases. Eso se llama fall-through. Quien empieza casi siempre quiere un break tras cada case terminado.
let day = 2;
switch (day) {
case 1:
console.log("Mon");
case 2:
console.log("Tue");
case 3:
console.log("Wed");
break;
default:
console.log("other");
}
Sin break también corren los cases siguientes
day es 2. La coincidencia empieza en case 2, imprime Tue, sigue a case 3 e imprime Wed antes del break. Querías una etiqueta; obtuviste dos. Pon break bajo cada case terminado salvo que compartas código a propósito.
let day = 9;
switch (day) {
case 1:
console.log("Mon");
break;
case 2:
console.log("Tue");
break;
default:
console.log("other");
}
default cubre «ninguno de estos»
day es 9. Ningún case coincide, así que corre default y ves other. Usa default cuando todo valor inesperado aún necesita un mensaje seguro. Omítelo solo si el silencio es aceptable.
let status = "warn";
switch (status) {
case "ok":
console.log("green");
break;
case "warn":
console.log("yellow");
break;
case "err":
console.log("red");
break;
default:
console.log("unknown");
}
Los cases también pueden ser cadenas
status es "warn", así que ves yellow. Los cases de cadena son comunes para códigos cortos de un formulario o API. Rangos como «nota de 60 a 90» siguen siendo de if / else if — switch quiere etiquetas discretas.
let day = 1;
let label;
switch (day) {
case 1:
label = "Mon";
break;
case 2:
label = "Tue";
break;
default:
label = "other";
}
console.log(label);
Nombra el resultado de la coincidencia
Asigna label dentro de cada case (y en default), luego úsalo una vez después. Aquí label pasa a ser "Mon". El mismo patrón que con if / else — primero eliges, luego usas.
Muestra el camino elegido en la página
Crea un mensaje corto con switch y escríbelo en la página.
<!DOCTYPE html>
<html>
<head>
<title>Switch — page choice</title>
</head>
<body>
<p id="out">…</p>
<script>
let day = 3;
let msg;
switch (day) {
case 1:
msg = "Mon";
break;
case 2:
msg = "Tue";
break;
case 3:
msg = "Wed";
break;
default:
msg = "other";
}
let box = document.getElementById("out");
box.textContent = "day=" + msg;
</script>
</body>
</html>
day es 3, la página muestra day=Wed. Pon day en 9, recarga y deberías ver day=other. La siguiente lección (for) repite trabajo muchas veces; para «¿qué etiqueta fija?» la herramienta sigue siendo switch.
Pruébalo tú
- Construye un
switchconlet day = 1que registre"Mon"en el case1. - Añade cases para
2y3conbreakdespués de cada uno. - Pon
dayen9y confirma quedefaultregistra"other". - Cambia sobre una cadena
statuscon"ok","warn","err". - Quita un
breakun momento y observa el fall-through en la Consola. - En la demo HTML cambia solo
day, recarga y lee el nuevo textoday=.
Errores habituales
- Olvidar
breaktras un case (también corren los siguientes) - Usar
switchpara rangos abiertos (score >= 60) — mejorif/else if - Mezclar tipos de modo que un número nunca coincida con un case de cadena
- Omitir
defaultcuando los valores desconocidos aún necesitan mensaje - Sustituir todo
ifporswitchcuando el chequeo no es una lista de etiquetas fijas
Resumen
switchempareja un valor con varias etiquetascasebreakdetiene el switch tras una coincidenciadefaultcorre cuando nada coincidió- Ideal para valores discretos; los rangos se quedan con
if/else if - Guarda una etiqueta si necesitas el resultado después; muéstrala en la página cuando ayude
- Siguiente: bucle for — repetir trabajo un número fijo de veces
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior