JavaScript中的label语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、什么是label语句

label语句是JavaScript的一种语句类型,使用label语句可以在代码中添加标签,以便将来使用。以下是label语句的语法:

label:statement

label语句中定义的标签可以在将来由break或continue语句引用,加标签的语句一般都要与for语句等循环语句配合使用。


二、label语句与break,continue语句联合使用

下面我们将会用一个嵌套循环语句展示label语句与break语句,continue语句联合使用所产生的效果,并分析其中的原理。以下是原始的嵌套循环语句。

var num=0;
for(i=0;i<10;i++){
    for(j=0;j<10;j++){
    	num++;
   }
}
console.log(num); //100

毫无疑问对这个原始的嵌套循环语句来说,最终会在控制台将输出100


1.break语句和continue语句

现在我们给这个嵌套循环语句加上break语句,代码如下:

var num=0;
for(i=0;i<10;i++){
    for(j=0;j<10;j++){
    	if(i==5&&j==5){
			break;
		}
    	num++;
   }
}
console.log(num); //95

当程序执行到i=5且j=5时,break语句让程序跳出内循环,执行外循环i的自增语句,也就是说跳过了当i=5,j=5,6,7,8,9的情况,相比与原始的嵌套循环少加了5次,所以结果为95


然后我们给这个嵌套循环语句加上break语句,代码如下:

var num=0;
for(i=0;i<10;i++){
    for(j=0;j<10;j++){
    	if(i==5&&j==5){
			coninue;
		}
    	num++;
   }
}
console.log(num);  //99

当程序执行到i=5且j=5时,continue语句让程序跳过了本次循环,执行内循环j的自增语句,也就是说只跳过了当i=5,j=5的情况,相比与原始的嵌套循环只少加了1次,所以结果为99

2.break语句和label语句联合使用

上面的代码其实很好理解,接下来我们在原来代码的基础上引入label语句,讨论以下label语句的原理。
我们在带有break语句的嵌套循环语句中联合使用label语句。代码如下:

var num=0;
start:
for(i=0;i<10;i++){
    for(j=0;j<10;j++){
    	if(i==5&&j==5){
			break start;
		}
    	num++;
   }
}
console.log(num);  //55

label语句的使用其实很简单,上面使用一个标签标记位置,下面在调用这个标签的位置就好啦,但是一定要切记,一定要先标记位置。
当程序执行到i=5且j=5时,break语句就会让程序跳转到标签标记处,也就是说break语句不仅让程序跳出了内循环,也同时跳出了外循环,那么从i=5且j=5之后的循环都不会再进行,那么num的值就是从i=0,j=0执行到i=5,j=5这个过程的求和,也就是55


那么对于下面的代码:

var num=0;
for(i=0;i<10;i++){
start:
    for(j=0;j<10;j++){
    	if(i==5&&j==5){
			break start;
		}
    	num++;
   }
}
console.log(num);  //95

当我们把label标签放在内循环开始的地方,不难想象,当程序执行到i=5且j=5时,程序只会跳出内循环。其实这个时候和不加label语句的结果是一样的,因为break语句本来就会跳转到现在label语句标记的位置。


2.continue语句和label语句联合使用

接着我们再在带有continue语句的嵌套循环语句中联合使用label语句。代码如下:

var num=0;
start:
for(i=0;i<10;i++){
    for(j=0;j<10;j++){
    	if(i==5&&j==5){
			continue start;
		}
    	num++;
   }
}
console.log(num);  //95

当程序执行到i=5且j=5时,continue语句就会让程序跳转到标签标记处,也就是说break语句让程序跳出了整个内循环,也就是跳过了当i=5,j=5,6,7,8,9的情况,相比与原始的嵌套循环少加了5次,所以结果为95


那么对于下面的代码:

var num=0;
for(i=0;i<10;i++){
start:
    for(j=0;j<10;j++){
    	if(i==5&&j==5){
			continue start;
		}
    	num++;
   }
}
console.log(num);  //95

当我们把label标签放在内循环开始的地方,当程序执行到i=5且j=5时,程序只会跳出当前循环。其实这个时候和不加label语句的结果是一样的,因为continue语句本来就会跳转到现在label语句标记的位置。


总结

联用break,continue语句能够执行复杂的操作,在适当的时候跳出循环,可以减少一些不必要的运算,从而让程序的更快的得到结果。但是如果label语句使用过渡也会给调试带来麻烦。所以,建议使用描述性标签,同时不要嵌套过多的循环。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值