What\'s the difference between:
switch (expression) {
case:
somethings;
break;
}
and
switch (expression) {
Curly braces used in this way establish their own block scope, in which you can define local let variables or const constants:
switch (false) {
case true: {
let x = "bar";
console.log(x);
break;
}
case false: {
let x = "baz";
console.log(x);
break;
}
}
The example would throw without nested block scopes, since multiple let/const declarations with the same identifier are not allowed within the same scope in Ecmascript 2015.
Please note that the switch statement creates a block scope itself, i.e. whether you use nested block scopes or not, let/const declarations inside switch don't leak into the parent scope.
However, in the context of switch, curly brackets are also used purely decorative, to visually highlight the blocks of the individual case branches.
you have to use curly brackets:
const / let) with the same name
const / let)