零基础学JavaScript
上QQ阅读APP看书,第一时间看更新

4.5 跳转语句

在循环语句的循环体中,JavaScript允许在满足一定条件的情况下,直接跳出循环语句。或在满足一定条件的情况下开始一个新的循环,这种操作就需要用到跳转语句。JavaScript中的跳转语句包括break语句与continue语句两种。

4.5.1 break语句

break语句的作用是跳出循环或结束switch语句,其语法代码如下所示:


break;

【实例4.13】有关break语句的使用方法请看以下代码,注意加粗的文字:


01   <html>
02      <head>
03         <title>break语句</title>
04         <script type="text/javascript">
05            <!--
06               for (var i=0,j=10,k=2;i<4;i++,j--,k++)
07               {
08                  document.write("i = " + i + "<br>");
09                  document.write("j = " + j + "<br>");
10                  document.write("k = " + k + "<br><br>");
11                  if (k==3)
12                  {
13                     break;
14                  }
15               }
16            -->
17         </script>
18      </head>
19      <body>
20      </body>
21   </html>

【代码说明】在本例中,for循环只进行了两次,就终止了。本例的执行过程如下所示:

(1)执行第6行的“var i=0, j=10, k=2;”初始化变量i、变量j和变量k。

(2)判断“i<4”是否返回true。此时变量i等于0,因此返回true,进入for循环。

(3)输出变量i、变量j和变量k的值。

(4)判断“k==3”是否返回true。此时变量k等于2,返回false,因此没有执行break语句。

(5)执行“i++, j--, k++”语句。

(6)再次判断“i<4”是否返回true。此时变量i等于1,因此返回true,再次进入for循环。

(7)输出变量i、变量j和变量k的值。

(8)判断“k==3”是否返回true。此时变量k等于3,返回true,此时执行break语句,跳出整个for循环。因此,本例中的循环体只执行了两次。

【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample13.htm”里的内容,其运行结果如图4.11所示。

图4.11 sample13.htm的运行结果

【实例4.14】在JavaScript中,循环语句也是可以嵌套的,在嵌套的循环语句中,break语句只能跳出离该语句最近一层的循环语句,而不是所有循环语句。请看以下代码,注意加粗的文字:


01   <html>
02      <head>
03         <title>break语句</title>
04         <script type="text/javascript">
05            <!--
06               var i = 0;
07               while (i<4)
08               {
09                  document.write("i = " + i + "<br>");
10                  for (var j=0;j<4;j++)
11                  {
12                     document.write("j = " + j + "<br>");
13                     if (j==1)
14                     {
15                        break;
16                     }
17                  }
18                  document.write("<br>");
19                  i++;
20               }
21            -->
22         </script>
23      </head>
24      <body>
25      </body>
26   </html>

【代码说明】在本例中可以看出,while循环语句一共执行了4次,而for语句在每次while语句的循环里只执行了2次,这是因为for语句在执行2次时,break语句就跳出了for循环,而不是while循环。

【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample14.htm”里的内容,其运行结果如图4.12所示。

图4.12 sample14.htm的运行结果

事实上,JavaScript也可以让break语句跳出到一个指定的循环之外,此时要使用到标签语句,有关标签语句在后续章节里还会详细介绍。跳出到指定循环外的break语句的语法代码如下所示:


break 标签;

【实例4.15】有关跳出到指定循环外的break语句的使用方法请看以下代码,注意加粗的文字:


01   <html>
02      <head>
03         <title>break语句</title>
04         <script type="text/javascript">
05            <!--
06               document.write("准备开始循环<br>");
07               outloop:
08               for (var i=0;i<4;i++)
09               {
10                  document.write("i = " + i + "<br>");
11                  for (var j=0;j<4;j++)
12                  {
13                     document.write("j = " + j + "<br>");
14                     if (j==1)
15                     {
16                        break outloop;
17                     }
18                  }
19                  document.write("<br>");
20               }
21               document.write("准备结束循环<br>");
22            -->
23         </script>
24      </head>
25      <body>
26      </body>
27   </html>

【代码说明】在本例中可以看出,第一个for语句的循环体只执行了一次,而第二个for语句的循环体也只执行了两次。这是因为在第二个for语句中的break语句直接跳出了标签名为outloop的第一个for语句。

【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample15.htm”里的内容,其运行结果如图4.13所示。

图4.13 sample15.htm的运行结果

4.5.2 continue语句

continue语句与break语句类似,也可以跳出一次循环。但与break语句不同的是,continue语句只会跳出一次循环,进入下一次循环,而break语句跳出循环之后结束了整个循环。continue语句的语法代码如下所示:


continue;

【实例4.16】有关continue语句的使用方法如下所示,注意加粗的文字:


01   <html>
02      <head>
03         <title>continue语句</title>
04         <script type="text/javascript">
05            <!--
06               for (var i=0,j=10;i<3;i++,j--)
07               {
08                  document.write("i = " + i + "<br>");
09                  if (j==9)
10                  {
11                     document.write("<br>");
12                     continue;
13                  }
14                  document.write("j = " + j + "<br><br>");
15               }
16            -->
17         </script>
18      </head>
19      <body>
20      </body>
21   </html>

【代码说明】在本例中,for循环只进行了两次就终止了。本例的执行过程如下所示:

(1)执行“var i=0, j=10”,初始化变量i和变量j的值。

(2)判断“i<3”是否返回true,此时变量i等于0,返回true,开始进入循环体。

(3)输出变量i的值。

(4)判断变量j是否等于9,此时变量j的值为10,返回false,跳过if语句中的语句块。

(5)输出变量j的值。

(6)变量i自加1,变量j自减1。此时变量i的值为1,变量j的值为9。

(7)第二次判断“i<3”是否返回true,此时变量i等于1,返回true,开始进入循环体。

(8)输出变量i的值。

(9)判断“j==9”是否返回ture,此时变量j等于9,返回true,执行if语句中的语句块。

(10)输出一个换行,并执行continue语句,跳出本次循环,开始下一次循环。

(11)变量i自加1,变量j自减1。此时变量i的值为2,变量j的值为8。

(12)判断“i<3”是否返回true,此时变量i等于2,返回true,开始进入循环体。

(13)输出变量i的值。

(14)判断变量j是否等于9,此时变量j的值为8,返回false,跳过if语句中的语句块。

(15)输出变量j的值。

(16)变量i自加1,变量j自减1。此时变量i的值为3,变量j的值为7。

(17)判断“i<3”是否返回true,此时变量i等于3,返回false,结束整个for循环。

在本例中可以看出,一旦执行了continue语句,在continue语句之后的所有语句就不再执行,并开始下一次循环。

continue语句可以用在所有循环语句中,但是不同的循环语句的处理方法有所不同。4种不同的循环语句的处理方式如下所示:

■在for语句中,结束当次循环后,执行改变变量表达式,再根据逻辑表达式返回的结果判断是否进入下一次循环。

■在while语句中,结束当次循环后,JavaScript会根据逻辑表达式返回的结果来判断是否进入下一次循环。

■在do...while语句中,结束当次循环后,JavaScript会跳至do...while语句的底部,根据逻辑表达式返回的结果来判断是否进入下一次循环。

■在for...in语句中,结束当次循环后,JavaScript会将下一个属性名赋值给变量,开始下一次循环。

与break语句一样,在嵌套的循环语句中,continue只能跳出离该语句最近一层的循环语句,如果要跳出指定的循环语句,可以使用以下语句:


continue 标签;

由于该语句的使用方法和break语句十分相似,在此就不再赘述了。

【运行效果】以上代码为本书配套代码文件目录“代码\第04章\sample16.htm”里的内容,其运行结果如图4.14所示。

图4.14 sample16.htm的运行结果