no-labels
不允許標籤語句
❄️ 已凍結
此規則目前已凍結,並且不接受功能請求。
JavaScript 中的標籤語句與 break
和 continue
一起使用,以控制多個迴圈周圍的流程。例如
outer:
while (true) {
while (true) {
break outer;
}
}
break outer
語句確保此程式碼不會導致無限迴圈,因為在套用 outer
標籤後,控制權會返回到下一個語句。 如果此語句更改為僅 break
,則控制權將流回外部 while
語句,並導致無限迴圈。
雖然在某些情況下標籤很方便,但標籤的使用頻率往往很低,並且被某些人認為是一種補救形式的流程控制,這種控制更容易出錯且更難以理解。
規則詳情
此規則旨在消除 JavaScript 中標籤語句的使用。 每當遇到標籤語句以及 break
或 continue
與標籤一起使用時,它都會發出警告。
此規則的 錯誤 程式碼範例
在 Playground 中開啟
/*eslint no-labels: "error"*/
此規則的 正確 程式碼範例
在 Playground 中開啟
/*eslint no-labels: "error"*/
const f = {
label: "foo"
};
while (true) {
break;
}
while (true) {
continue;
}
選項
選項允許在迴圈或 switch 語句中使用標籤
"allowLoop"
(boolean
,預設為false
) - 如果此選項設定為true
,則此規則會忽略附加到迴圈語句的標籤。"allowSwitch"
(boolean
,預設為false
) - 如果此選項設定為true
,則此規則會忽略附加到 switch 語句的標籤。
實際上,JavaScript 中的標籤語句可以與迴圈和 switch 語句以外的語句一起使用。 然而,這種方式非常罕見,鮮為人知,因此會讓開發人員感到困惑。
allowLoop
{ "allowLoop": true }
選項的 正確 程式碼範例
在 Playground 中開啟
/*eslint no-labels: ["error", { "allowLoop": true }]*/
label:
while (true) {
break label;
}
allowSwitch
{ "allowSwitch": true }
選項的 正確 程式碼範例
在 Playground 中開啟
/*eslint no-labels: ["error", { "allowSwitch": true }]*/
label:
switch (a) {
case 0:
break label;
}
何時不該使用
如果您需要在任何地方使用標籤語句,那麼您可以安全地停用此規則。
相關規則
版本
此規則在 ESLint v0.4.0 中引入。