{ . . . }

Estructura Condicional Switch

Sin Comentarios

La condicional switch es una estructura de control de flujo similar a if/else. Esta instrucción se usa para realizar diferentes acciones basadas en diferentes condiciones.

Básicamente usamos switch para controlar operaciones condicionales complejas, esta es ideal para reemplazar múltiples declaraciones if else encadenadas, como la siguiente :

if (expresion == valor_1) {
    declaracion_1;
} else if (expresion == valor_2) {
    declaracion_2;
} else if (expresion == valor_3) {
    declaracion_3
} else {
    declaracion_por_defecto;
}
En la declaración switch se evalúa una expresión, el valor de esta expresión se compara con los valores de cada caso, si hay una coincidencia, se ejecuta el bloque de código asociado al caso.

Sintaxis básica de la instrucción switch:

switch (expresion) {
    case valor_1:
        declaracion_1;
        break;
    case valor_2:
        declaración_2;
        break;
    default:
        declaracion_por_defecto;
}

Cada case en la sentencia switch ejecuta la instrucción correspondiente a cada declaración ( declaracion_1, declaracion_2 ) si la expresión dada es igual a dicho valor ( valor_1, valor_2 ).

Cada declaración de caso finaliza con un break, este evita que el interprete de javascript siga probando casos del bloque condicional. Si este se omite la ejecución continuará por el resto de los case que tenga por debajo hasta que alguno finalice con break. Básicamente el break hace que el interprete salte fuera del bloque switch ignorando el resto del código dentro del bloque.

Si la expresión no coincide con ningún valor establecido en los case, se ejecutará la declaración establecida como default. Este se comporta como el else del bloque condicional if / else.

El bloque default puede omitirse del condicional si es que no hay la necesidad de manejar un caso predeterminado caso cuando no se encuentra una coincidencia en el bloque.

var usuario = 3;

switch (usuario) {
    case 1:
        usuario = "Administrador";
        break;
    case 2:
        usuario = "Colaborador";
        break;
    case 3:
        usuario = "Registrado";
        break;
    default:
        usuario = "No Registrado";
}
console.log("Usted es un usuario: " + usuario );
// "Usted es un usuario: Registrado"

En el ejemplo anterior vemos como el valor de la variable usuario coincide con el tercer case aplicando la instrucción dada en este bloque, es decir reasignar el “string” como valor de la variable usuario, que en este caso es “Registrado”. En caso de no cumplirse ninguna condición se aplicaría el bloque predeterminado que declara el string “No Registrado”.


También es posible crear múltiples case dentro del bloque switch y que estos compartan y ejecuten la misma instrucción, esto nos ahorra el tener que escribir múltiples cases para obtener un mismo valor.

var anio = 2017;
var numeroMes = 2;
var diasDelMes;

switch (numeroMes) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        diasDelMes = 31;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        diasDelMes = 30;
        break;
    case 2:
        if (((anio % 4 == 0) && !(anio % 100 == 0))
            || (anio % 400 == 0))
            diasDelMes = 29;
        else
            diasDelMes = 28;
        break;
    default:
        diasDelMes = "Mes invalido";
}
 
console.log("Este mes tiene " + diasDelMes + " dias");
// "Este mes tiene 28 dias"

Hay cuatro casos en la lógica del anterior código :

  1. Si el mes es 1, 3,5, 7, 8, 10 o 12, el número de días del mes es 31.
  2. Si el mes es 4, 6, 9 u 11, el número de días del mes es 30.
  3. Si el mes es 2 y el año no es bisiesto, el número de días es 28. Si el año es bisiesto, el número de días es 29.
  4. Si el mes de entrada no está en el rango (1 – 12), el interprete  salta al bloque default y establece la variable diasDelMes con el valor "Mes invalido"

En este tutorial vimos cómo controlar estructuras condicionales complejas con la declaración switch en JavaScript de forma básica.

Comentar

avatar