3.3 跳转语句
视频讲解
假设在一个书架中寻找一本《新华字典》,如果在第二排第三个位置找到了这本书,那么就不需要去看第三排、第四排的书了。同样,在编写一个循环语句时,当循环还未结束就已经处理完了所有的任务,就没有必要让循环继续执行下去,继续执行下去既浪费时间又浪费内存资源。在JavaScript中提供了两种用来控制循环的跳转语句:continue语句和break语句。
3.3.1 continue语句
continue语句用于跳过本次循环,并开始下一次循环。其语法格式如下:
continue;
注意
continue语句只能应用在while、for、do…while语句中。
例如,在for语句中通过continue语句输出10以内不包括5的自然数的代码如下:
01 for(i=1;i<=10;i++){ 02 if(i==5) continue; //如果i等于5就跳过本次循环 03 document.write(i+"\n"); //输出变量i的值 04 }
运行结果为:
1 2 3 4 6 7 8 9 10
说明
当使用continue语句跳过本次循环后,如果循环条件的结果为false,则退出循环,否则继续下一次循环。
【例3.10】万达影城7号影厅的观众席有4排,每排有10个座位。其中,1排6座和3排9座已经出售,在页面中输出该影厅当前的座位图。关键代码如下:(实例位置:资源包\源码\03\3.10)
01 <script type="text/javascript"> 02 document.write("<table align='center'>"); //输出表格标签 03 for(var i = 1; i <= 4; i++){ //定义外层for循环语句 04 document.write("<tr height=70>"); //输出表格行标签 05 for(var j = 1; j <= 10; j++){ //定义内层for循环语句 06 if(i == 1 && j == 6){ //如果当前是1排6座 07 //将座位标记为“已售” 08 document.write("<td align='center' width=80 background=yes.png>已售</td>"); 09 continue; //应用continue语句跳过本次循环 10 } 11 if(i == 3 && j == 9){ //如果当前是3排9座 12 //将座位标记为“已售” 13 document.write("<td align='center' width=80 background=yes.png>已售</td>"); 14 continue; //应用continue语句跳过本次循环 15 } 16 //输出排号和座位号 17 document.write("<td align='center' width=80 background=no.png>"+i+"排"+j+"座"+"</td>"); 18 } 19 document.write("</tr>"); //输出表格行结束标签 20 } 21 document.write("</table>"); //输出表格结束标签 22 </script>
运行本实例,结果如图3.18所示。
图3.18 输出影厅当前座位图
3.3.2 break语句
在3.1.2节的switch语句中已经用到了break语句,当程序执行到break语句时就会跳出switch语句。除了switch语句之外,在循环语句中也经常会用到break语句。
在循环语句中,break语句用于跳出循环。break语句的语法格式如下:
break;
说明
break语句通常用在for、while、do…while或switch语句中。
例如,在for语句中通过break语句跳出循环的代码如下:
01 for(i=1;i<=10;i++){ 02 if(i==5) break; //如果i等于5就跳出整个循环 03 document.write(i+"\n"); //输出变量i的值 04 }
运行结果为:
1 2 3 4
注意
在嵌套的循环语句中,break语句只能跳出当前这一层的循环语句,而不是跳出所有的循环语句。
例如,应用break语句跳出当前循环的代码如下:
01 var i,j; //声明变量 02 for(i=1;i<=3;i++){ //定义外层循环语句 03 document.write(i+"\n"); //输出变量i的值 04 for(j=1;j<=3;j++){ //定义内层循环语句 05 if(j==2) //如果变量j的值等于2 06 break; //跳出内层循环 07 document.write(j); //输出变量j的值 08 } 09 document.write("<br>"); //输出换行标记 10 }
运行结果为:
1 1 2 1 3 1
由运行结果可以看出,外层for循环语句一共执行了3次(输出1、2、3),而内层循环语句在每次外层循环里只执行了一次(只输出1)。