gpt4 book ai didi

JavaScript 标签

转载 作者:行者123 更新时间:2023-12-03 07:09:19 26 4
gpt4 key购买 nike

Mozilla 开发者网络指出

语句1:“带标签的语句可以与break或continue语句一起使用。它是在语句前面加上一个可以引用的标识符。”

语句 2:“break 可与任何标记语句一起使用,而 continue 可与循环标记语句一起使用。”

问题:javascript 是否允许标记任何语句或仅标记循环。如果只是循环语句?上述 MDN 中的“声明 2”有何相关性

最佳答案

您可以为任何语句添加标签,包括带标签的语句。仅当带标签语句内的某个位置是中断或继续有意义的上下文时,标签才会做一些有用的事情。

因此

pointless: var x = 0;

语法上没问题,但标签没有(不能)做任何事情。

为了能够中断到标签,中断需要位于带标签的语句内部break 不能位于 var 声明的“内部”,如上例所示,这就是它没有用的原因。然而,这是可行的,并且是 break 的典型用法:

outerLoop: for (var i = 0; i < matrix.length; ++i) {
for (var j = 0; j < matrix[i].length; ++j) {
var inMatrix = matrix[i][j];
if (somethingWeird(inMatrix))
break outerLoop;
}
}

如果您想打破嵌套循环结构,而又不想测试一些尴尬的标志,则可以使用这样的标记语句。

来自 MDN 的有点神秘的注释,您提到 break 可从任何类型的语句中使用,这只意味着您可以 break 从非循环的事物中:

someLabel: if (condition(something)) {
// code code code
if (shouldGiveUp())
break someLabel;
// more code
}

这就像“转到”外部 if 语句之后的下一个语句。您无法使用 Continue 来做到这一点,因为 Continue 仅对迭代构造有意义。

关于JavaScript 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36678589/

26 4 0