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"*/
var 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 中引入的。