码迷,mamicode.com
首页 > 其他好文 > 详细

流控制 break/continue 与 label 的组合

时间:2017-03-17 19:23:04      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:amp   情况   isp   语句   splay   round   定义   设置   code   

一、定义

  基本形式:

    for (单次表达式;条件表达式;末尾循环体) {

      中间循环体;

    }

如:

    for (var i = 1; i < 10; i++) {
      if (i % 5 == 0) {
        break; // or continue;
      }
    }

  break :立即退出循环,强制执行该循环后面的语句;break之后,末尾循环体不再执行,如示例i++不执行;

  continue:立即退出循环,然后从循环顶部开始继续执行;continue之后,末尾循环体仍然执行,如示例i++执行;

  label:添加代码标签,便于break、continue引用。

 

二、label的使用

  先看如下示例:

var tNum = 0;
var oNum = 0;
for (var i = 0; i < 10; i++) {
    for(var j = 0; j < 10; j++) {
        if (i == 5 && j == 5) {
            break;
        }
        tNum++;
    }
    oNum++;
}
console.log(‘tNum = ‘ + tNum++);
console.log(‘oNum = ‘ + oNum++);
运行结果:
tNum = 95
oNum = 10
var tNum = 0;
var oNum = 0;
outermost:
for (var i = 0; i < 10; i++) {
    for(var j = 0; j < 10; j++) {
        if (i == 5 && j == 5) {
            break outermost;
        }
        tNum++;
    }
    oNum++;
}
console.log(‘tNum = ‘ + tNum++);
console.log(‘oNum = ‘ + oNum++);
运行结果:
tNum = 55
oNum = 5

  该示例为嵌套循环下,break是否启用label标签的对比运行代码和结果,其中的outermost就是自定义的label名。

  由运行结果我们可以得到如下结论:

          a、如左侧示例,在未设置label时,break仅跳出一层循环,外层循环仍然执行了10次;

    b、如右侧示例,在设置了label时,break跳出了两层循环,外层循环与内层循环同时停止;

    c、所以,在多层嵌套的情况下,通过设置label标签,可以跳出多层循环。

  continue的类似执行结果(将break替换成continue),如下:

未设置label标签:  

tNum = 99
oNum = 10 

  未设置label标签:  

  tNum = 95
  oNum = 9 

  结论与break的相同。

     总结,label标签可结合break、continue使用,可以辅助跳出多层循环或者跳到指定位置。          

流控制 break/continue 与 label 的组合

标签:amp   情况   isp   语句   splay   round   定义   设置   code   

原文地址:http://www.cnblogs.com/hity-tt/p/6567440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!