Si has visto la sección de condicionales If/else, habrás notado que su último ejemplo, donde utilizamos múltiples condiciones if / else no es demasiado elegante, ya que existe mucho código repetitivo. Si tenemos la necesidad de hacer múltiples condiciones y queremos solucionar esto, podemos recurrir al switch.
Condicional Switch
La estructura de control switch permite definir casos específicos a realizar cuando la variable expuesta como condición sea igual a los valores que se especifican a continuación mediante cada case:
let nota = 7;
console.log("He realizado mi examen. Mi resultado es el siguiente:");
switch (nota) {
case 10:
calificacion = "Sobresaliente";
break;
case 9:
case 8:
calificacion = "Notable";
break;
case 7:
case 6:
calificacion = "Bien";
break;
case 5:
calificacion = "Suficiente";
break;
case 4:
case 3:
case 2:
case 1:
case 0:
calificacion = "Insuficiente";
break;
default:
// Cualquier otro caso
calificacion = "Nota errónea";
break;
}
console.log("He obtenido un", calificacion);
Hay varias puntualizaciones que aclarar sobre este ejemplo, así que vamos a explicarlo:
- La sentencia
switchestablece que vamos a realizar múltiples condiciones analizando la variablenota. - Cada condición se establece mediante un
case, seguido del valor posible de cada caso. - El
switchcomienza evaluando el primercase, y continua con el resto, hacia abajo. - Observa que algunos
casetienen unbreak. Esto hace que deje de evaluar y se salga delswitch. - Los
caseque no tienenbreak, no se interrumpen, sino que se salta al siguientecase. - El caso especial
defaultes como unelse. Si no entra en ninguno de los anteriores, entra endefault.
Ten en cuenta que este ejemplo no es exactamente equivalente al que vimos en el tema de if/else. Este ejemplo funcionaría si sólo permitimos notas que sean números enteros, es decir, números del 0 al 10, sin decimales. En el caso de que nota tuviera por ejemplo, el valor 7.5, mostraría Nota errónea, ya que no entraría en los casos anteriores.
El ejemplo de los
if múltiplesdel tema anterior si controla casos de números decimales porque establecemos comparaciones de rangos con mayor o menor (> ó <), cosa que con el switch no se puede hacer. El switch está indicado para casos con valores concretos y específicos.
Recuerda que al final de cada caso es necesario indicar un break para terminar y salir del switch. En el caso que no sea haga, el programa saltará al siguiente caso, incluso aunque no se cumpla la condición específica.
Alternativas al Switch
Aunque puede funcionar perfectamente, a muchos programadores el switch no les resulta una estructura condicional satisfactoria, ya que tiene una sintaxis algo extraña que puede complicarse, puede ser difícil de leer y poco elegante. Existen algunas alternativas que veremos más adelante, como el uso de diccionarios y objetos, o incluso el uso de operadores ternarios, que muchas veces, también son desaconsejados en casos con muchas condiciones.
