1 Label,break和continue
1.1 break和continue
break 和continue 语句用于在循环中精确地控制代码的执行。break和continue语句只在循环和switch语句中使用。不能在if语句中使用break和continue
使用break语句会使程序立刻退出最近的循环,强制执行循环后边的语句。
使用continue语句会使程序跳过最近的当次循环,继续执行下一次循环,并不会结束整个循环。continue只能在循环中使用,不能出现在其他的结构中。
1.2 label
使用label 语句可以在代码中添加标签,以便将来使用。加标签的语句一般都要与for 语句等循环语句配合使用。
语法:label: statement
这个例子中定义的start 标签可以在将来由break 或continue 语句引用。
2 练习
2.1 break和continue,质数优化
2.2 break 和 label 语句
2.2.1 一层for循环
var num = 0;
outprint : for(var i = 0; i < 10; i++){
if(i == 5){
break outprint;
}
num++;
}
alert(num); //当 i == 5 时,跳出 outprint循环,输出 5
2.2.2 二层for循环
var num = 0;
outprint:for(var i = 0; i < 10; i++){
for(var j = 0; j < 10; j++){
if(i == 5 && j == 5){
break outprint;
}
num++;
}
}
alert(num); //当 i == 5,j == 5 的时候,强制跳出outprint所代表的循环,继续执行outprint所代表的循环体后面的代码,输出 55 。
2.2.3 三层循环
var num = 0;
outprint:for(var i = 0; i < 10; i++){
for(var j = 0; j < 10; j++){
for(var k = 0; k < 10; k++){
if(i == 5 && j == 5 && k == 5){
break outprint;
}
num++;
}
}
}
alert(num); //当当 i == 5,j == 5,k == 5 时,马上跳出outprint所代表的循环,继续执行outprint循环体后面的代码,输出555 。
不在最外围:
var num = 0;
for(var i = 0; i < 10; i++){
outprint:for(var j = 0; j < 10; j++){
for(var k = 0; k < 10; k++){
if(i == 5 && j == 5 && k == 5){
break outprint;
}
num++;
}
}
}
alert(num); //当 i == 5,j == 5,k == 5 时,中断outprint的循环,继续执行outprint后面的代码,输出 955
2.3 continue和 label 语句
2.3.1 一层循环
var num = 0;
outprint : for(var i = 0; i < 10; i++){
if(i == 5){
continue outprint;
}
num++;
}
alert(num); //当 i == 5 时,跳出 outprint循环,继续从outprint的开头继续开始执行,输出 9
2.3.2 二层循环
var num = 0;
outprint:for(var i = 0; i < 10; i++){
for(var j = 0; j < 10; j++){
if(i == 5 && j == 5){
continue outprint;
}
num++;
}
}
alert(num); //当 i == 5,j == 5 的时候,跳出outprint所代表的循环,继续从outprint所代表的循环的开头执行代码,输出 95 。
2.3.3 三层循环
var num = 0;
outprint:for(var i = 0; i < 10; i++){
for(var j = 0; j < 10; j++){
for(var k = 0; k < 10; k++){
if(i == 5 && j == 5 && k == 5){
continue outprint;
}
num++;
}
}
}
alert(num); //当 i == 5,j == 5,k == 5 时,中断outprint的循环,再从outprint的开头执行代码,输出955