eslint/no-labels Style
它的作用
禁止使用带标签的语句。
为什么这很糟糕?
JavaScript 中的带标签语句与 break 和 continue 一起使用,用于控制多个循环之间的流程。例如:
js
outer: while (true) {
while (true) {
break outer;
}
}break outer 语句可确保这段代码不会进入无限循环,因为控制流会在应用了 outer 标签后的下一条语句继续执行。如果将这条语句改为仅使用 break,控制流就会回到外层 while 语句,从而导致无限循环。 虽然在某些情况下很方便,但标签通常很少使用,并且一些人认为它是一种补救式的流程控制方式,更容易出错,也更难理解。
示例
此规则的错误代码示例:
js
label: while (true) {
// ...
}
label: while (true) {
break label;
}
label: while (true) {
continue label;
}
label: switch (a) {
case 0:
break label;
}
label: {
break label;
}
label: if (a) {
break label;
}此规则的正确代码示例:
js
var f = {
label: "foo",
};
while (true) {
break;
}
while (true) {
continue;
}配置
此规则接受一个包含以下属性的配置对象:
allowLoop
类型:boolean
默认值:false
如果设置为 true,此规则会忽略附着在循环语句上的标签。 将此选项设置为 true 时的正确代码示例:
js
label: while (true) {
break label;
}allowSwitch
类型:boolean
默认值:false
如果设置为 true,此规则会忽略附着在 switch 语句上的标签。 将此选项设置为 true 时的正确代码示例:
js
label: switch (a) {
case 0:
break label;
}如何使用
To enable this rule using the config file or in the CLI, you can use:
json
{
"rules": {
"no-labels": "error"
}
}ts
import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"no-labels": "error",
},
});bash
oxlint --deny no-labels版本
此规则在 v0.15.4 中加入。
