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"*/
此规则的 正确 代码示例
在 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;
}
何时不使用
如果您需要在任何地方使用标签语句,则可以安全地禁用此规则。
相关规则
版本
此规则在 ESLint v0.4.0 中引入。