目录
1、break
1.1、概述
break
语句中止当前循环,switch
语句或 label
语句,并把程序控制流转到紧接着被中止语句后面的语句。
1.2、语法
break [label];
label
【可选】:与语句标签相关联的标识符。如果 break 语句不在一个循环或switch
语句中,则该项是必须的。
1.3、描述
break
语句包含一个可选的标签,可允许程序摆脱一个被标记的语句。break
语句需要内嵌在引用的标签中。被标记的语句可以是任何块语句;不一定是循环语句。
break
语句不能在 function
函数体中直接使用,break
语句应嵌套在要中断的当前循环、switch
或 label
语句中。
1.4、示例
1.4.1、break in while loop
下面的函数里有个 break 语句,当 i 为 3 时,会中止 while 循环,然后返回 3 * x 的值。
function testBreak(x) {
var i = 0;
while (i < 6) {
if (i == 3) {
break;
}
i += 1;
}
return i * x;
}
1.4.2、break in switch statements
在下面的代码中, break
使用在 switch
语句中,当遇到匹配到 case
后,就会执行相应的代码并中断循环体。
const food = "sushi";
switch (food) {
case "sushi":
console.log("Sushi is originally from Japan.");
break;
case "pizza":
console.log("Pizza is originally from Italy.");
break;
default:
console.log("I have never heard of that dish.");
break;
}
1.4.3、break in labeled blocks
下面的代码中一起使用 break
语句和被标记的块语句。一个 break
语句必须内嵌在它引用的标记中。注意,inner_block
内嵌在 outer_block
中。
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
}
1.4.4、break in labeled blocks that throw
下面的代码同样使用了 break
语句和被标记的块语句,但是产生了一个语法错误,因为它的 break
语句在 block_1
中,但是引用了 block_2
。break
语句必须内嵌在它引用的标签中。
block_1:{
console.log ('1');
break block_2; // SyntaxError: label not found
}
block_2:{
console.log ('2');
}
1.4.5、break within functions
在下面的代码同样会产生 SyntaxError,因为它并没被正确的使用在循环、switch 或 label 语句中。
function testBreak(x) {
var i = 0;
while (i < 6) {
if (i == 3) {
(function() {
break;
})();
}
i += 1;
}
return i * x;
}
testBreak(1); // SyntaxError: Illegal break statement
block_1: {
console.log('1');
( function() {
break block_1; // SyntaxError: Undefined label 'block_1'
})();
}
2、continue
2.1、概述
continue
声明终止当前循环或标记循环的当前迭代中的语句执行,并在下一次迭代时继续执行循环。
2.2、语法
continue [ label ];
- label:标识标号关联的语句
2.3、描述
与 break 语句的区别在于, continue 并不会终止循环的迭代,而是:
- 在 while 循环中,控制流跳转回条件判断;
- 在 for 循环中,控制流跳转到更新语句。
continue 语句可以包含一个可选的标号以控制程序跳转到指定循环的下一次迭代,而非当前循环。此时要求 continue 语句在对应的循环内部。
2.4、示例
2.4.1、在 while 语句中使用 continue
下述例子展示了一个在i 为 3 时执行continue 语句的 while 循环。因此,n 的值在几次迭代后分别为 1, 3, 7 和 12。
i = 0;
n = 0;
while (i < 5) {
i++;
if (i === 3) {
continue;
}
n += i;
}
2.4.2、使用带 label 的 continue
在下面的例子中,被标记为 checkiandj 的语句包含一个被标记为 checkj 的语句。当遇到continue 语句时,程序回到 checkj 语句的开始继续执行。每次遇到 continue 时,再次执行 checkj ,直到条件判断返回 false 。之后完成 checkiandj 语句剩下的部分。
但如果 continue 的标号被改为 checkiandj ,那程序将会从 checkiandj 语句的开始继续运行。
var i = 0,
j = 8;
checkiandj: while (i < 4) {
console.log("i: " + i);
i += 1;
checkj: while (j > 4) {
console.log("j: " + j);
j -= 1;
if (j % 2 == 0) continue checkj;
console.log(j + " is odd.");
}
console.log("i = " + i);
console.log("j = " + j);
}
输出:
"i: 0"
// start checkj
"j: 8"
"7 is odd."
"j: 7"
"j: 6"
"5 is odd."
"j: 5"
// end checkj
"i = 1"
"j = 4"
"i: 1"
"i = 2"
"j = 4"
"i: 2"
"i = 3"
"j = 4"
"i: 3"
"i = 4"
"j = 4"
3、示例
continue 关键字用于立即跳出本次循环,继续下一次循环(本次循环体中 continue 之后的代码就会少执行一次)。
例如,吃5个包子,第3个有虫子,就扔掉第3个,继续吃第4个第5个包子,其代码实现如下:
for (var i = 1; i <= 5; i++) {
if (i == 3) {
console.log("这个包子有虫子,扔掉");
continue; // 跳出本次循环,跳出的是第3次循环
}
console.log("我正在吃第" + i + "个包子呢");
}
运行结果:
break 关键字用于立即跳出整个循环(循环结束)。
例如,吃5个包子,吃到第3个发现里面有半个虫子,其余的不吃了,其代码实现如下:
for (var i = 1; i <= 5; i++) {
if (i == 3) {
break; // 直接退出整个for 循环,跳到整个for下面的语句
}
console.log("我正在吃第" + i + "个包子呢");
}
运行结果
后记
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※
!!!