SyntaxError: label not found

breakcontinue 语句引用了包含 breakcontinue 语句的任何语句中不存在的标签时,会发生 JavaScript 异常“label not found”。

消息

SyntaxError: Undefined label 'label' (V8-based)
SyntaxError: label not found (Firefox)
SyntaxError: Cannot use the undeclared label 'label'. (Safari)

错误类型

SyntaxError.

哪里出错了?

在 JavaScript 中,标签的限制非常多:你只能将它们与 breakcontinue 语句一起使用,并且只能从标签语句中包含的语句跳转到它们。你无法从程序的任何位置跳转到此标签。

示例

不合语法的跳转

你不能像使用 goto 一样使用标签。

js
start: console.log("Hello, world!");
console.log("Do it again");
break start;

相反,你只能使用标签来增强 breakcontinue 语句的正常语义。

js
start: {
  console.log("Hello, world!");
  if (Math.random() > 0.5) {
    break start;
  }
  console.log("Maybe I'm logged");
}

另见