首页 > 代码库 > 流控制 break/continue 与 label 的组合
流控制 break/continue 与 label 的组合
一、定义
基本形式:
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 的组合
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。