版本

no-labels

禁止使用標籤語句

JavaScript 中的標籤語句與 breakcontinue 結合使用,以控制多個迴圈周圍的流程。例如

outer:
    while (true) {

        while (true) {
            break outer;
        }
    }

break outer 語句確保此程式碼不會導致無限迴圈,因為控制權會返回到應用 outer 標籤之後的下一個語句。如果此語句變更為僅 break,控制權將會流回外層的 while 語句,並導致無限迴圈。

雖然在某些情況下很方便,但標籤往往很少使用,並且被某些人視為一種補救形式的流程控制,它更容易出錯且更難以理解。

規則詳情

此規則旨在消除在 JavaScript 中使用標籤語句。每當遇到標籤語句,以及使用帶有標籤的 breakcontinue 時,它都會發出警告。

此規則的錯誤程式碼範例

在遊樂場中開啟
/*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;
    }

此規則的正確程式碼範例

在遊樂場中開啟
/*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 中引入。

資源

變更語言