Spec-Zone.ru › ESLint

no-case-declarations

Запрещает лексические объявления в ветвях case

✅ Рекомендуется

Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило

💡 Имеет предложения

Некоторые проблемы, о которых сообщает это правило, можно исправить вручную с помощью предложений редактора

Это правило запрещает лексические объявления (let, const, function и class) в ветвях case/default. Причина в том, что лексическое объявление видно во всём блоке switch, но инициализируется оно только при присваивании, которое произойдёт, только если будет достигнута ветвь case, в которой оно определено.

Чтобы лексическое объявление относилось только к текущей ветви case, заключите ветви в блоки.

Подробное описание правила

Это правило призвано предотвратить доступ к неинициализированным лексическим привязкам, а также доступ к поднятым функциям в разных ветвях case.

Примеры неправильного кода для этого правила:

Открыть в Playground
/*eslint no-case-declarations: "error"*/

switch (foo) {
    case 1:
        let x = 1;
        break;
    case 2:
        const y = 2;
        break;
    case 3:
        function f() {}
        break;
    default:
        class C {}
}

Примеры правильного кода для этого правила:

Открыть в Playground
/*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.

Связанные правила

  • no-fallthrough

Версия

Это правило появилось в ESLint v1.9.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-case-declarations

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API