规范goes
BreakStatement : break ; break [no LineTerminator here] Identifier ;
然后它
程序包含带有可选标识符的break语句,其中Identifier不出现在封闭(但不是交叉函数边界)语句的标签集中。
...
具有标识符的BreakStatement的计算方法如下:
Return (break, empty, Identifier).
血淋淋的地球是什么意思?
答案 0 :(得分:4)
标签是这样的:
// ...
mylabel:
// ...
这可以放在任何地方作为陈述。
当有多个嵌套break
循环时,continue
/ for
很有用。
其用法示例:
var i, j;
loop1:
for (i = 0; i < 3; i++) { //The first for statement is labeled "loop1"
loop2:
for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2"
if (i === 1 && j === 1) {
continue loop1;
}
console.log("i = " + i + ", j = " + j);
}
}
// Output is:
// "i = 0, j = 0"
// "i = 0, j = 1"
// "i = 0, j = 2"
// "i = 1, j = 0"
// "i = 2, j = 0"
// "i = 2, j = 1"
// "i = 2, j = 2"
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2"
答案 1 :(得分:2)
如果您查看MDN,就会有例子
outer_block: {
inner_block: {
console.log('1');
break outer_block; // breaks out of both inner_block and outer_block
console.log(':-('); // skipped
}
console.log('2'); // skipped
}
正如您所看到的,您可以break
使用标识符选择链中较高的标签,而不仅仅是第一个直接父语句。
没有标识符的默认操作是
outer_block: {
inner_block: {
console.log('1');
break; // breaks out of the inner_block only
console.log(':-('); // skipped
}
console.log('2'); // still executed, does not break
}
断点必须在标签内,你不能根据断点超出的标识符来破坏标签。