JavaScript系列之 break 和 continue


1、break

1.1、概述

break 语句中止当前循环,switch语句或 label 语句,并把程序控制流转到紧接着被中止语句后面的语句。

1.2、语法

break [label];
  • label【可选】:与语句标签相关联的标识符。如果 break 语句不在一个循环或 switch 语句中,则该项是必须的。

1.3、描述

break语句包含一个可选的标签,可允许程序摆脱一个被标记的语句。break语句需要内嵌在引用的标签中。被标记的语句可以是任何块语句;不一定是循环语句。

break 语句不能在 function 函数体中直接使用,break 语句应嵌套在要中断的当前循环、switchlabel 语句中。

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_2break 语句必须内嵌在它引用的标签中。

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^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老__L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值