no-case-declarations
Запрещает лексические объявления в ветвях case
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
Некоторые проблемы, о которых сообщает это правило, можно исправить вручную с помощью предложений редактора
Это правило запрещает лексические объявления (let, const, function и class) в ветвях case/default. Причина в том, что лексическое объявление видно во всём блоке switch, но инициализируется оно только при присваивании, которое произойдёт, только если будет достигнута ветвь case, в которой оно определено.
Чтобы лексическое объявление относилось только к текущей ветви case, заключите ветви в блоки.
Подробное описание правила
Это правило призвано предотвратить доступ к неинициализированным лексическим привязкам, а также доступ к поднятым функциям в разных ветвях case.
Примеры неправильного кода для этого правила:
/*eslint no-case-declarations: "error"*/
switch (foo) {
case 1:
break;
case 2:
break;
case 3:
break;
default:
}
Примеры правильного кода для этого правила:
/*eslint no-case-declarations: "error"*/
// Declarations outside switch-statements are valid
const a = 0;
switch (foo) {
// The following case clauses are wrapped into blocks using brackets
case 1: {
let x = 1;
break;
}
case 2: {
const y = 2;
break;
}
case 3: {
function f() {}
break;
}
case 4:
// Declarations using var without brackets are valid due to function-scope hoisting
var z = 4;
break;
default: {
class C {}
}
}
Параметры
У этого правила нет параметров.
Когда не следует использовать это правило
Если вы полагаетесь на переход к следующей ветви и хотите получить доступ к привязкам, объявленным в блоке case.
Связанные правила
Версия
Это правило появилось в ESLint v1.9.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-case-declarations