标签通常与break语句和continue语句配合使用,跳出特定的循环。
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) break top;
console.log('i=' + i + ', j=' + j);
}console.log('第一层循环');
}console.log('第二层循环');
// i=0, j=0
// i=0, j=1
// i=0, j=2
// 第一层循环
// i=1, j=0
// 第二层循环
上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。如果break语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) break;
console.log('i=' + i + ', j=' + j);
}console.log('第一层循环');
}console.log('第二层循环');
// 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
// 第一层循环
// 第二层循环
continue语句也可以与标签配合使用。
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) continue top;
console.log('i=' + i + ', j=' + j);
}console.log('第一层循环');
}console.log('第二层循环');
// 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
// 第一层循环
// 第二层循环
上面代码中,continue命令后面有一个标签名,满足条件时,会跳过当前循环,直接进入下一轮外层循环。如果continue语句后面不使用标签,则只能进入下一轮的内层循环。
top:
for (var i = 0; i < 3; i++){
for (var j = 0; j < 3; j++){
if (i === 1 && j === 1) continue;
console.log('i=' + i + ', j=' + j);
}console.log('第一层循环');
}console.log('第二层循环');
// i=0, j=0
// i=0, j=1
// i=0, j=2
// 第一层循环
// i=1, j=0
// i=1, j=2
// 第一层循环
// i=2, j=0
// i=2, j=1
// i=2, j=2
// 第一层循环
// 第二层循环