Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
标记语句是任何带有标识符前缀的语句。你可以使用嵌套在标记语句中的 break 或 continue 语句跳转到对应标记。
JavaScript 语句。break 可以在任何标记语句中使用,而 continue 可以在标记的循环语句中使用。
你可以使用标签来标识语句,并在后续使用 break 或 continue 语句来引用该标签。请注意,JavaScript 没有 goto 语句;你只能将标签与 break 或 continue 一起使用。
任何引用 label 的 break 或 continue 语句都必须位于标记语句 label 所标记的语句的范围内。把 label 看作是仅在 statement 作用域内可用的变量。
如果在执行 statement 时遇到 break label; 语句,则 statement 执行终止,并继续执行标记的语句之后的语句。
continue label; 只能在 statement 是循环语句时使用。如果在执行 statement 时遇到 continue label; 语句,则 statement 继续执行循环的下一次迭代。不带标签的 continue; 语句只能继续最内层的循环,而 continue label; 语句可以继续任何给定的循环,即使该语句嵌套在其他循环中。
一个语句可以有多个标签。在这种情况下,这些标签在功能上都是等价的。
注意它如何跳过“i = 1, j = 1”和“i = 1, j = 2”。
请注意和前面的 continue 示例的区别:当遇到 break loop1 时,外层循环的执行终止,因此之后的日志都不会再输出;当遇到 continue loop1 时,外层循环的执行会继续下一次迭代,因此会跳过“i = 1, j = 1”和“i = 1, j = 2”。
给定一个数据数组和一个测试数组,下面的例子会统计通过测试的数据的数量。
请注意 continue itemIteration; 语句如何跳过当前项的其余测试以及更新 itemsPassed 计数器的语句,并继续下一个项目。如果你不使用标签,则需要使用布尔标志。
给定一个数据数组和一个测试数组,下面的例子会确定所有数据是否通过所有测试。
同样,如果你不使用标签,则需要使用布尔标志。
你可以标记除循环语句以外的语句,例如简单的块,但只有 break 语句才能引用非循环标签。
只能标记语句而不能标记声明。在非严格代码中,有一种遗留语法允许使用标签来标记函数声明:
在严格模式下,这将会抛出一个 SyntaxError:
非普通函数,例如生成器函数和异步函数既不能在严格代码中进行标记,也不能在非严格代码中进行标记:
函数声明标记语法已弃用,并且即使是在非严格代码中,也不应该使用。你不能在函数体内跳转到此标签。
| ECMAScript® 2027 Language Specification # sec-labelled-statements |
启用 JavaScript 以查看此浏览器兼容性表。