首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

no-labels

JavaScript 中的标记语句与多个循环一起使用breakcontinue控制流。例如:

代码语言:javascript
复制
outer:
    while (true) {

        while (true) {
            break outer;
        }
    }

break outer语句确保此代码不会导致无限循环,因为控件outer在应用标签后返回到下一个语句。如果这个语句被改变为只是break,控制会回流到外部while语句,并会导致无限循环。

虽然在某些情况下很方便,但标签往往只能用于很少的情况,并且被某些人视为流量控制的补救形式,这种流程控制更容易出错并且难以理解。

规则细节

该规则旨在消除 JavaScript 中使用带标签的语句。只要遇到带标签的语句以及每次breakcontinue使用标签时,它都会发出警告。

此规则的错误代码示例:

代码语言:javascript
复制
/*eslint no-labels: "error"*/

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;
    }

此规则的正确代码示例:

代码语言:javascript
复制
/*eslint no-labels: "error"*/

var f = {
    label: "foo"
};

while (true) {
    break;
}

while (true) {
    continue;
}

选项

这些选项允许带有循环或切换语句的标签:

  • "allowLoop"boolean,默认是false) - 如果设置了此选项true,则此规则将忽略粘贴到循环语句的标签。
  • "allowSwitch"boolean,默认是false) - 如果设置了此选项true,则此规则将忽略粘贴到开关语句的标签。

实际上 JavaScript 中的标记语句可以与循环和 switch 语句以外的其他语句一起使用。但是,这种方式非常罕见,并不是众所周知的,所以这会让开发人员感到困惑。

allowLoop

选项的正确代码示例{ "allowLoop": true }

代码语言:javascript
复制
/*eslint no-labels: ["error", { "allowLoop": true }]*/

label:
    while (true) {
        break label;
    }

allowSwitch

选项的正确代码示例{ "allowSwitch": true }

代码语言:javascript
复制
/*eslint no-labels: ["error", { "allowSwitch": true }]*/

label:
    switch (a) {
        case 0:
            break label;
    }

何时不使用它

如果您需要在任何地方使用带标签的语句,则可以安全地禁用此规则。

相关规则

  • no-extra-label
  • no-label-var
  • no-unused-labels

版本

这条规则是在 ESLint 0.4.0 中引入的。

资源

扫码关注腾讯云开发者

领取腾讯云代金券