Las sentencias switch en JavaScript proporcionan una forma más clara y organizada de manejar múltiples condiciones en comparación con las sentencias if-else anidadas. Son especialmente útiles cuando se necesita comparar una variable o expresión con varios valores posibles y ejecutar diferentes bloques de código en función del resultado.

Conceptos Clave

  1. Sintaxis Básica:

    switch (expresión) {
        case valor1:
            // Código a ejecutar si expresión === valor1
            break;
        case valor2:
            // Código a ejecutar si expresión === valor2
            break;
        // Puedes tener tantos casos como necesites
        default:
            // Código a ejecutar si ninguno de los casos anteriores coincide
    }
    
  2. Expresión: La expresión que se evalúa una vez y se compara con los valores de cada caso.

  3. Casos: Cada case representa un valor posible de la expresión. Si la expresión coincide con el valor del caso, se ejecuta el bloque de código correspondiente.

  4. Break: La sentencia break se utiliza para salir del bloque switch una vez que se ha ejecutado el código de un caso. Sin break, el código continuará ejecutándose en los siguientes casos (comportamiento conocido como "fall-through").

  5. Default: El bloque default es opcional y se ejecuta si ninguno de los casos coincide con la expresión. Es similar a la cláusula else en una sentencia if-else.

Ejemplo Práctico

Vamos a ver un ejemplo práctico para entender mejor cómo funcionan las sentencias switch.

Ejemplo: Determinar el Día de la Semana

let dia = 3;
let nombreDelDia;

switch (dia) {
    case 1:
        nombreDelDia = 'Lunes';
        break;
    case 2:
        nombreDelDia = 'Martes';
        break;
    case 3:
        nombreDelDia = 'Miércoles';
        break;
    case 4:
        nombreDelDia = 'Jueves';
        break;
    case 5:
        nombreDelDia = 'Viernes';
        break;
    case 6:
        nombreDelDia = 'Sábado';
        break;
    case 7:
        nombreDelDia = 'Domingo';
        break;
    default:
        nombreDelDia = 'Día inválido';
}

console.log(nombreDelDia); // Output: Miércoles

Explicación del Código

  1. Declaración de Variables:

    let dia = 3;
    let nombreDelDia;
    

    Aquí, dia es la variable que vamos a evaluar en la sentencia switch. nombreDelDia almacenará el nombre del día correspondiente.

  2. Sentencia Switch:

    switch (dia) {
        case 1:
            nombreDelDia = 'Lunes';
            break;
        case 2:
            nombreDelDia = 'Martes';
            break;
        case 3:
            nombreDelDia = 'Miércoles';
            break;
        case 4:
            nombreDelDia = 'Jueves';
            break;
        case 5:
            nombreDelDia = 'Viernes';
            break;
        case 6:
            nombreDelDia = 'Sábado';
            break;
        case 7:
            nombreDelDia = 'Domingo';
            break;
        default:
            nombreDelDia = 'Día inválido';
    }
    

    La expresión dia se compara con cada caso. Cuando dia es igual a 3, se ejecuta el bloque de código correspondiente y se asigna 'Miércoles' a nombreDelDia. La sentencia break asegura que el programa salga del bloque switch después de encontrar una coincidencia.

  3. Salida del Resultado:

    console.log(nombreDelDia); // Output: Miércoles
    

Ejercicio Práctico

Ejercicio 1: Clasificación de Calificaciones

Escribe una función que reciba una calificación numérica (0-100) y devuelva una letra según la siguiente escala:

  • 90-100: A
  • 80-89: B
  • 70-79: C
  • 60-69: D
  • 0-59: F
function obtenerCalificacion(letra) {
    let calificacion;

    switch (true) {
        case (letra >= 90 && letra <= 100):
            calificacion = 'A';
            break;
        case (letra >= 80 && letra < 90):
            calificacion = 'B';
            break;
        case (letra >= 70 && letra < 80):
            calificacion = 'C';
            break;
        case (letra >= 60 && letra < 70):
            calificacion = 'D';
            break;
        case (letra >= 0 && letra < 60):
            calificacion = 'F';
            break;
        default:
            calificacion = 'Calificación inválida';
    }

    return calificacion;
}

// Prueba la función
console.log(obtenerCalificacion(85)); // Output: B
console.log(obtenerCalificacion(92)); // Output: A
console.log(obtenerCalificacion(58)); // Output: F
console.log(obtenerCalificacion(105)); // Output: Calificación inválida

Solución Explicada

  1. Función obtenerCalificacion:

    function obtenerCalificacion(letra) {
        let calificacion;
    
  2. Sentencia Switch:

    switch (true) {
        case (letra >= 90 && letra <= 100):
            calificacion = 'A';
            break;
        case (letra >= 80 && letra < 90):
            calificacion = 'B';
            break;
        case (letra >= 70 && letra < 80):
            calificacion = 'C';
            break;
        case (letra >= 60 && letra < 70):
            calificacion = 'D';
            break;
        case (letra >= 0 && letra < 60):
            calificacion = 'F';
            break;
        default:
            calificacion = 'Calificación inválida';
    }
    
  3. Retorno del Resultado:

    return calificacion;
    
  4. Pruebas:

    console.log(obtenerCalificacion(85)); // Output: B
    console.log(obtenerCalificacion(92)); // Output: A
    console.log(obtenerCalificacion(58)); // Output: F
    console.log(obtenerCalificacion(105)); // Output: Calificación inválida
    

Conclusión

Las sentencias switch son una herramienta poderosa para manejar múltiples condiciones de manera clara y organizada. Son especialmente útiles cuando se necesita comparar una variable con varios valores posibles. Recuerda siempre usar la sentencia break para evitar el comportamiento de "fall-through" y utilizar el bloque default para manejar casos no previstos. Con la práctica, dominarás el uso de switch y podrás aplicarlo eficazmente en tus programas JavaScript.

JavaScript: De Principiante a Avanzado

Módulo 1: Introducción a JavaScript

Módulo 2: Estructuras de Control

Módulo 3: Funciones

Módulo 4: Objetos y Arrays

Módulo 5: Objetos y Funciones Avanzadas

Módulo 6: El Modelo de Objetos del Documento (DOM)

Módulo 7: APIs del Navegador y Temas Avanzados

Módulo 8: Pruebas y Depuración

Módulo 9: Rendimiento y Optimización

Módulo 10: Frameworks y Librerías de JavaScript

Módulo 11: Proyecto Final

© Copyright 2024. Todos los derechos reservados