| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/Bad_break | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Der JavaScript-Ausnahmefehler "unlabeled break must be inside loop or switch" tritt auf, wenn eine break-Anweisung nicht innerhalb einer Schleife oder einer switch-Anweisung verwendet wird.
SyntaxError: Illegal break statement (V8-based) SyntaxError: unlabeled break must be inside loop or switch (Firefox) SyntaxError: 'break' is only valid inside a switch or loop statement. (Safari)
break-Anweisungen knnen verwendet werden, um eine Schleife oder eine switch-Anweisung zu verlassen, und die Verwendung an anderer Stelle ist ein Syntaxfehler. Alternativ knnen Sie der break-Anweisung ein Label zuweisen, um aus einer beliebigen Anweisung mit diesem Label auszubrechen wenn das Label jedoch keine umgebende Anweisung referenziert, wird ein anderer Fehler SyntaxError: label not found ausgelst.
break kann auerhalb von switch oder Schleifen nicht verwendet werden.
let score = 0;
function increment() {
if (score === 100)
break; // SyntaxError: unlabeled break must be inside loop or switch
}
score++;
}
Vielleicht mchten Sie stattdessen return verwenden, um eine Funktion frhzeitig zu beenden.
let score = 0;
function increment() {
if (score === 100) {
return;
}
score++;
}
break kann in Callbacks nicht verwendet werden, selbst wenn der Callback aus einer Schleife aufgerufen wird.
let containingIndex = 0;
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
while (containingIndex < matrix.length) {
matrix[containingIndex].forEach((value) => {
if (value === 5) {
break; // SyntaxError: unlabeled break must be inside loop or switch
}
});
containingIndex++;
}
Stattdessen sollten Sie den Code so umstrukturieren, dass das break auerhalb des Callbacks verwendet wird.
let containingIndex = 0;
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
outer: while (containingIndex < matrix.length) {
for (const value of matrix[containingIndex]) {
if (value === 5) {
break outer;
}
}
containingIndex++;
}
let containingIndex = 0;
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
while (containingIndex < matrix.length) {
if (matrix[containingIndex].includes(5)) {
break;
}
containingIndex++;
}
Es gibt keine Mglichkeit, eine forEach()-Schleife vorzeitig zu beenden. Sie knnen stattdessen some() verwenden oder sie in eine for...of Schleife umwandeln.
array.forEach((value) => {
if (value === 5) {
break; // SyntaxError: unlabeled break must be inside loop or switch
}
// do something with value
});
array.some((value) => {
if (value === 5) {
return true;
}
// do something with value
return false;
});
for (const value of array) {
if (value === 5) {
break;
}
// do something with value
}
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |