label:可使用一个标签来唯一标记一个循环,然后使用 break 或 continue 语句来指示程序是否中断循环或继续执行。
由于js并没有goto 语句,标记只能和 break 或 continue 一起使用,导致增加了跳出多层循环的复杂性。
例如:
// 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"
输出以上,你怎样通过两个for循环来进行?
var i, j;
loop1:
for (i = 0; i < 3; i++) {
loop2:
for (j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
continue loop1;
}
console.log("i = " + i + ", j = " + j);
}
}
上面是continue中使用label
现在演示一下break,展示区别:
var i, j;
loop1:
for (i = 0; i < 3; i++) {
loop2:
for (j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
break loop1;
}
console.log("i = " + i + ", j = " + j);
}
}
在标记块中使用 break
foo: {
console.log('face');
break foo;
console.log('this will not be executed');
}
console.log('swap');
//参考文献
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/label