Diferencia entre usar llaves { en un switch case en JavScript / TypeScript

Tiempo de lectura: < 1 minuto

La diferencia principal entre usar llaves en un bloque case y no hacerlo radica en el ámbito de las variables.

Sin llaves

Cuando no usas llaves en un bloque case, cualquier declaración de variable con const o let se considera que está en el mismo ámbito que el switch y puede causar conflictos. Si declaras una variable en un case, puedes obtener un error como «Unexpected lexical declaration in case block», ya que las variables declaradas con const y let tienen un alcance de bloque, y el bloque case no crea un nuevo ámbito.

Con llaves

Al usar llaves {}, creas un nuevo ámbito. Esto significa que cualquier variable declarada con const, let, o class dentro de este bloque es local a ese bloque y no afecta el ámbito externo. Esto permite que puedas declarar variables en diferentes case sin causar conflictos.

Ejemplo Comparativo

Sin llaves:

switch (value) {
    case 1:
        const x = 10; // Error: Unexpected lexical declaration in case block
        break;
    case 2:
        const x = 20; // Error: x is already declared
        break;
}

Con llaves:

switch (value) {
    case 1: {
        const x = 10; // Correcto
        break;
    }
    case 2: {
        const x = 20; // Correcto, x es diferente al anterior
        break;
    }
}

Sin llaves: No se crea un nuevo ámbito, puede causar conflictos de declaración.

Con llaves: Se crea un nuevo ámbito, permite declarar variables sin conflictos.

Deja un comentario