Запрет на метки
Запрет на использование помеченных операторов
Помеченные операторы в 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"*/
var f = {
label: "foo"
};
while (true) {
break;
}
while (true) {
continue;
}
Параметры
Параметры позволяют использовать метки с операторами цикла или переключателя:
-
"allowLoop"(boolean, значение по умолчаниюfalse) - Если этот параметр установленtrue, это правило игнорирует метки, связанные с операторами цикла. -
"allowSwitch"(boolean, значение по умолчаниюfalse) - Если этот параметр установленtrue, это правило игнорирует метки, связанные с операторами переключателя.
На самом деле помеченные операторы в JavaScript могут использоваться не только с операторами цикла и переключателя. Однако такой подход крайне редкий, не широко известный, и поэтому может ввести разработчиков в заблуждение.
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