JS: Condicional 'switch'

El condicional switch es una instrucción que permite evaluar una expresión y ejecutar diferentes bloques de código según el valor obtenido. Resulta útil cuando se puede tener varios valores posibles, ya que organiza el código de forma más clara, legible y fácil de mantener que otras estructuras condicionales.

Como alternativa, existe el condicional if…else combinando varias cláusulas else if o incluso if anidados. Sin embargo, la instrucción switch ofrece una sintaxis más limpia y estructurada: en vez de escribir múltiples condiciones, las agrupa en un solo bloque, facilitando la lectura de cada caso.

Algoritmo

Su funcionamiento es sencillo: primero se evalúa la expresión indicada; si su valor coincide con alguna de las etiquetas de caso (case), se ejecuta su bloque de código asociado. Si ninguna etiqueta coincide con el valor de la expresión, se ejecuta el bloque de código del caso por defecto (default).

Diagrama de flujo de un condicional 'switch'
Diagrama de flujo de un condicional 'switch'.

Cada vez que se ejecuta el programa, la expresión se evalúa una sola vez. Si su valor coincide con el primer caso, se ejecuta su bloque asociado y se termina el switch. Si no coincide con el primero continúa comprobando hasta llegar al último caso. Puede haber tantos casos como se necesiten, y si no se cumple ninguno, se ejecutará el código del bloque predeterminado (default).

Sintaxis

La palabra reservada switch marca el inicio de esta estructura condicional. Después, entre paréntesis (()) se indica la expresión que se quiere evaluar, y se comparará con los diferentes casos establecidos. Entre llaves ({}) se incluyen todos los casos, y de forma opcional, el caso por defecto.

Su sintaxis es la siguiente:

switch (expresión) {
  case 1:
    // Código que se ejecuta
    // si el valor es 1
    break;
  case 2:
    // Código que se ejecuta
    // si el valor es 2
    break;
  case 3:
    // Código que se ejecuta
    // si el valor es 3
    break;
  default:
    // Código que se ejecuta
    // si no es ninguno de
    // los anteriores
}

La expresión entre paréntesis puede ser una variable, una expresión matemática, el resultado de una función, una expresión lógica o incluso un tipo de dato. En resumen, se trata de cualquier expresión evaluable que devuelve un valor.

Cada caso se declara mediante la palabra reservada case, seguida del valor que se quiere comparar con la expresión. Dicho valor puede ser un número, una cadena de texto o un valor booleano. No obstante, no tendría sentido crear un switch para decisiones tan simples que solo requieran dos posibles caminos.

Por último, la palabra default es opcional y permite definir el bloque de código por defecto o predeterminado. Este código se ejecutará cuando ninguno de los casos anteriores coincida con el valor de la expresión. Haciendo una comparativa, actúa de forma similar a un else en una estructura if...else.

Ejemplo: los días de la semana

Una de las formas más comunes de utilizar el condicional switch es cuando se desea ejecutar diferentes acciones según el valor de una variable concreta. En este ejemplo, si tenemos una variable que representa un número que va del 1 al 7, podemos asociar cada número con 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;
  case 6:
    console.log("Sábado");
    break;
  case 7:
    console.log("Domingo");
    break;
  default:
    console.log("Número de día no válido");
}

Lo primero que hace el switch es evaluar el valor de la variable dia. El programa recorre los distintos casos (del 1 a 7) hasta encontrar una coincidencia exacta con el valor almacenado en la variable, y mostrará el mensaje correspondiente. Por tanto, si la variable dia vale 3, el programa mostrará «Miércoles».

Cada bloque finaliza con la instrucción break, lo que indica que el programa debe salir del switch una vez ejecutado el caso correcto. Si se omitiera el break, el flujo continuaría ejecutando los siguientes casos, dando resultados indeseados. A este comportamiento se le conoce como «fall through».

Finalmente, si el valor de la variable no coincide con ninguno de los casos definidos, se ejecuta el bloque del default, actuando como una especie de plan alternativo. Así se puede tomar decisiones cuando hay valores fuera del rango de 1 a 7.

Ejemplo: las notas de examen

Para profundizar más en el funcionamiento del condicional switch, veamos un ejemplo más complejo: analizar una nota de examen y mostrar su calificación textual (suspendido, aprobado, notable o sobresaliente). Para simplificarlo un poco, almacenamos la nota del estudiante en la variable nota.

let nota = 7;

switch (true) {
  case (nota < 5):
    console.log('Suspendido');
    break;
  case (nota < 7):
    console.log('Aprobado');
    break;
  case (nota < 9):
    console.log('Notable');
    break;
  default:
    console.log('Excelente');
}

En este ejemplo, la instrucción switch evalúa la expresión true. Aunque pueda parecer extraño, esta técnica es muy común cuando se quiere evaluar condiciones lógicas en lugar de valores exactos. De esta manera, cada case contiene una comparación comprobada de forma secuencial hasta que una de ellas devuelve true. En este punto se ejecuta el bloque correspondiente.

Como en el ejemplo anterior, si no se incluyera el break, el flujo de ejecución continuaría con los siguientes bloques, ejecutando todos los casos indicados. Esta “caída” o «fall through» puede ser útil en situaciones concretas, aunque en la mayoría de los casos se evita para mantener un control más preciso.

← Artículo anterior
Artículo siguiente →