Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
SyntaxError: Ein nicht gekennzeichneter break muss innerhalb einer Schleife oder eines switch sein
Der JavaScript-Ausnahmefehler "unlabeled break must be inside loop or switch" tritt auf, wenn einebreak-Anweisung nicht innerhalb einer Schleife oder einerswitch-Anweisung verwendet wird.
In diesem Artikel
Meldung
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)
Fehlerart
Was ist schiefgegangen?
break-Anweisungen können verwendet werden, um eine Schleife oder eineswitch-Anweisung zu verlassen, und die Verwendung an anderer Stelle ist ein Syntaxfehler. Alternativ können Sie derbreak-Anweisung einLabel zuweisen, um aus einer beliebigen Anweisung mit diesem Label auszubrechen — wenn das Label jedoch keine umgebende Anweisung referenziert, wird ein anderer FehlerSyntaxError: label not found ausgelöst.
Beispiele
>Unsachgemäßes break
break kann außerhalb vonswitch 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 möchten Sie stattdessenreturn verwenden, um eine Funktion frühzeitig zu beenden.
let score = 0;function increment() { if (score === 100) { return; } score++;}Verwendung von break in Callbacks
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 dasbreak außerhalb 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 Möglichkeit, eineforEach()-Schleife vorzeitig zu beenden. Sie können stattdessensome() verwenden oder sie in einefor...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}