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
switch
establece 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
switch
comienza evaluando el primercase
, y continua con el resto, hacia abajo. - Observa que algunos
case
tienen unbreak
. Esto hace que deje de evaluar y se salga delswitch
. - Los
case
que no tienenbreak
, no se interrumpen, sino que se salta al siguientecase
. - El caso especial
default
es 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últiples
del 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.