В switch выражении все case блоки делят единую область видимости. Это означает, что переобъявление переменной let или const в разных case'ах вызывает SyntaxError.
let и const привязаны к блоку, и поскольку всё тело switch рассматривается как один блок, дублирующиеся объявления недопустимы — даже если они находятся в отдельных case ветках.
switch (value) {
case 1:
let x = "hello"; // SyntaxError если переобъявить ниже
break;
case 2:
let x = "world"; // ❌ Дублирующееся объявление
break;
}
Оберни каждый case в фигурные скобки {}, чтобы создать независимую область видимости для каждой ветки.
switch (value) {
case 1: {
let x = "hello"; // ✅ Видна только в этом блоке
break;
}
case 2: {
let x = "world"; // ✅ Видна только в этом блоке
break;
}
}
case ветки по умолчанию делят одну область видимостиlet или const в разных case'ах без блоков вызывает SyntaxErrorcase в {} создаёт изолированную область видимости, разрешая конфликтswitch выраженийБез фигурных скобок все case блоки в switch выражении разделяют одну область видимости, что предотвращает переобъявление переменных let или const в разных case'ах.
Новый — ещё не проверен сообществом
Вы