eslint/no-labels 风格
它的作用
禁止使用标签语句。
为什么这是不好的?
在 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
type: boolean
默认值: false
若设置为 true,则该规则会忽略紧邻循环语句的标签。 当此选项设置为 true 时的 正确 代码示例:
js
label: while (true) {
break label;
}allowSwitch
type: boolean
默认值: false
若设置为 true,则该规则会忽略紧邻 switch 语句的标签。 当此选项设置为 true 时的 正确 代码示例:
js
label: switch (a) {
case 0:
break label;
}如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"no-labels": "error"
}
}bash
oxlint --deny no-labels