Spec-Zone.ru › ESLint

no-labels

Запрещает инструкции с метками

❄️ Заморожено

В настоящее время это правило заморожено, и предложения по добавлению новых возможностей не принимаются.

Инструкции с метками в JavaScript используются вместе с break и continue для управления потоком выполнения во вложенных циклах. Например:

outer:
    while (true) {

        while (true) {
            break outer;
        }
    }

Инструкция break outer гарантирует, что этот код не приведёт к бесконечному циклу, поскольку управление передаётся следующей инструкции после метки outer. Если заменить эту инструкцию просто на break, управление вернётся к внешней инструкции while, и возникнет бесконечный цикл.

Хотя в некоторых случаях метки удобны, их используют редко, и некоторые считают их устаревшим способом управления потоком выполнения, который чаще приводит к ошибкам и сложнее для понимания.

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

Это правило призвано исключить использование инструкций с метками в JavaScript. Оно выдаёт предупреждение при обнаружении инструкции с меткой, а также при использовании break или continue с меткой.

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

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

label:while(true){// ...}

label:while(true){break label;}

label:while(true){continue label;}

label:switch(a){case0:break label;}

label:{break label;}

label:if(a){break label;}

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

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

const f = {
    label: "foo"
};

while (true) {
    break;
}

while (true) {
    continue;
}

Параметры

Параметры позволяют использовать метки с инструкциями циклов или switch:

  • "allowLoop" (boolean, значение по умолчанию — false) — если для этого параметра задано значение true, правило игнорирует метки, относящиеся к инструкциям циклов.
  • "allowSwitch" (boolean, значение по умолчанию — false) — если для этого параметра задано значение true, правило игнорирует метки, относящиеся к инструкциям switch.

На самом деле в JavaScript инструкции с метками можно использовать не только с циклами и инструкциями switch. Однако такой способ крайне редок и малоизвестен, поэтому он может сбивать разработчиков с толку.

allowLoop

Примеры правильного кода с параметром { "allowLoop": true }:

Открыть в Playground
/*eslint no-labels: ["error", { "allowLoop": true }]*/

label:
    while (true) {
        break label;
    }

allowSwitch

Примеры правильного кода с параметром { "allowSwitch": true }:

Открыть в Playground
/*eslint no-labels: ["error", { "allowSwitch": true }]*/

label:
    switch (a) {
        case 0:
            break label;
    }

Когда не следует использовать это правило

Если вам необходимо повсеместно использовать инструкции с метками, это правило можно отключить.

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

  • no-extra-label
  • no-label-var
  • no-unused-labels

Версия

Это правило появилось в ESLint v0.4.0.

Ресурсы

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

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

Spec-Zone.ru

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