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 中引入的。