跳转到内容

noConfusingLabels

Diagnostic Category: lint/suspicious/noConfusingLabels

Since: v1.0.0

Sources:

Disallow labeled statements that are not loops.

Labeled statements in JavaScript are used in conjunction with break and continue to control flow around multiple loops. Their use for other statements is suspicious and unfamiliar.

The rule ignores reactive Svelte statements in Svelte components.

label: f();
code-block.js:1:1 lint/suspicious/noConfusingLabels ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Unexpected label.

> 1 │ label: f();
^^^^^
2 │

Only loops should be labeled.
The use of labels for other statements is suspicious and unfamiliar.

label: {
f();
break label;
}
code-block.js:1:1 lint/suspicious/noConfusingLabels ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Unexpected label.

> 1 │ label: {
^^^^^
2 │ f();
3 │ break label;

Only loops should be labeled.
The use of labels for other statements is suspicious and unfamiliar.

label: if (a) {
f()
break label;
}
code-block.js:1:1 lint/suspicious/noConfusingLabels ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Unexpected label.

> 1 │ label: if (a) {
^^^^^
2 │ f()
3 │ break label;

Only loops should be labeled.
The use of labels for other statements is suspicious and unfamiliar.

label: switch (a) {
case 0:
break label;
}
code-block.js:1:1 lint/suspicious/noConfusingLabels ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Unexpected label.

> 1 │ label: switch (a) {
^^^^^
2 │ case 0:
3 │ break label;

Only loops should be labeled.
The use of labels for other statements is suspicious and unfamiliar.

outer: while (a) {
while(b) {
break outer;
}
}
<script>
$: { /* reactive block */ }
</script>