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.
