no-labels
Запрещает инструкции с метками
В настоящее время это правило заморожено, и предложения по добавлению новых возможностей не принимаются.
Инструкции с метками в JavaScript используются вместе с break и continue для управления потоком выполнения во вложенных циклах. Например:
outer:
while (true) {
while (true) {
break outer;
}
}
Инструкция break outer гарантирует, что этот код не приведёт к бесконечному циклу, поскольку управление передаётся следующей инструкции после метки outer. Если заменить эту инструкцию просто на break, управление вернётся к внешней инструкции while, и возникнет бесконечный цикл.
Хотя в некоторых случаях метки удобны, их используют редко, и некоторые считают их устаревшим способом управления потоком выполнения, который чаще приводит к ошибкам и сложнее для понимания.
Подробности правила
Это правило призвано исключить использование инструкций с метками в JavaScript. Оно выдаёт предупреждение при обнаружении инструкции с меткой, а также при использовании break или continue с меткой.
Примеры неправильного кода для этого правила:
/*eslint no-labels: "error"*/
Примеры правильного кода для этого правила:
/*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 }:
/*eslint no-labels: ["error", { "allowLoop": true }]*/
label:
while (true) {
break label;
}
allowSwitch
Примеры правильного кода с параметром { "allowSwitch": true }:
/*eslint no-labels: ["error", { "allowSwitch": true }]*/
label:
switch (a) {
case 0:
break label;
}
Когда не следует использовать это правило
Если вам необходимо повсеместно использовать инструкции с метками, это правило можно отключить.
Связанные правила
Версия
Это правило появилось в ESLint v0.4.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-labels