Что делают фигурные скобки в инструкции switch после случая в es6?
Какая разница между:
switch (expression) {
case:
somethings;
break;
}
и
switch (expression) {
case: {
somethings;
break;
}
}
Сначала мне показалось, что я могу возвращать объектный литерал так, но получается синтаксическая ошибка. Какая разница на самом деле?
Пример из другого вопроса:
Как передать оператор switch в качестве аргумента функции в Javascript ES6?
Ответы
Ответ 1
В фигурных скобках, используемых таким образом, устанавливается их собственная область блока, в которой вы можете определить локальные переменные let
или константы const
:
switch (false) {
case true: {
let x = "bar";
console.log(x);
break;
}
case false: {
let x = "baz";
console.log(x);
break;
}
}
Ответ 2
Вы должны использовать фигурные скобки:
- при создании большего количества переменных области блока (
const
/let
) с тем же именем - согласно спецификации MDN Web Docs
- ОШИБКА: Uncaught SyntaxError: Идентификатор 'имя переменной' уже объявлен
- при использовании eslint в настройках по умолчанию и использовании даже одного (
const
/let
) - согласно правилу no-case-декларации
- ОШИБКА: неожиданное лексическое объявление в случае блока