Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. JavaScript-Fehlerreferenz
  5. SyntaxError: Ein nicht gekennzeichneter break muss innerhalb einer Schleife oder eines switch sein

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

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.

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

SyntaxError.

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.

js
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.

js
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.

js
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.

js
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++;}
js
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.

js
array.forEach((value) => {  if (value === 5) {    break; // SyntaxError: unlabeled break must be inside loop or switch  }  // do something with value});
js
array.some((value) => {  if (value === 5) {    return true;  }  // do something with value  return false;});
js
for (const value of array) {  if (value === 5) {    break;  }  // do something with value}

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp