流控制 break/continue 与 label 的组合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流控制 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标签:
未设置label标签:
结论与break的相同。
总结,label标签可结合break、continue使用,可以辅助跳出多层循环或者跳到指定位置。
以上是关于流控制 break/continue 与 label 的组合的主要内容,如果未能解决你的问题,请参考以下文章
循环(for,while,until)与循环控制符(break,continue)
第三天(下) 流程控制 if while swtich break continue