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