JavaScript - 循环控制


JavaScript 提供了处理循环和 switch 语句的完全控制。可能存在这样的情况:您需要在未到达底部的情况下退出循环。也可能存在这样的情况:您想跳过代码块的一部分并开始循环的下一次迭代。

为了处理所有此类情况,JavaScript 提供了breakcontinue语句。这些语句分别用于立即退出任何循环或开始任何循环的下一次迭代。

中断语句

Break语句是与switch语句一起简要介绍的,用于提前退出循环,打破封闭的大括号

流程图

Break 语句的流程图如下所示 -

中断声明

例子

以下示例说明了将break语句与while 循环一起使用。请注意,一旦x达到 5 并到达右大括号正下方的document.write (..)语句,循环如何提前中断 -

<html>
   <body>     
      <script type = "text/javascript">
         <!--
         var x = 1;
         document.write("Entering the loop<br /> ");
         
         while (x < 20) {
            if (x == 5) {
               break;   // breaks out of loop completely
            }
            x = x + 1;
            document.write( x + "<br />");
         }         
         document.write("Exiting the loop!<br /> ");
         //-->
      </script>
      
      <p>Set the variable to different value and then try...</p>
   </body>
</html>

输出

Entering the loop
2
3
4
5
Exiting the loop!
Set the variable to different value and then try...

我们已经看到了switch语句中的break语句的用法。

继续语句

continue语句告诉解释器立即开始循环的下一次迭代并跳过剩余的代码块。当遇到continue语句时,程序流程立即转到循环检查表达式,如果条件成立,则开始下一次迭代,否则控制退出循环。

例子

此示例说明了continue语句与 while 循环的使用。请注意,当变量x中保存的索引达到 5 时,如何使用continue语句跳过打印-

<html>
   <body>      
      <script type = "text/javascript">
         <!--
            var x = 1;
            document.write("Entering the loop<br /> ");
         
            while (x < 10) {
               x = x + 1;
               
               if (x == 5) {
                  continue;   // skip rest of the loop body
               }
               document.write( x + "<br />");
            }         
            document.write("Exiting the loop!<br /> ");
         //-->
      </script>      
      <p>Set the variable to different value and then try...</p>
   </body>
</html>

输出

Entering the loop
2
3
4
6
7
8
9
10
Exiting the loop!
Set the variable to different value and then try...

使用标签来控制流程

从 JavaScript 1.2 开始,标签可以与Break一起使用,并继续更精确地控制流程。标签只是一个标识符,后跟一个冒号 (:),应用于语句或代码块我们将看到两个不同的示例来了解如何使用带有中断和继续的标签。

注意- “继续”“中断”语句及其标签名称之间不允许换行。此外,标签名称和关联循环之间不应有任何其他语句。

尝试以下两个示例以更好地理解标签。

实施例1

下面的示例展示了如何使用break语句实现Label。

<html>
   <body>      
      <script type = "text/javascript">
         <!--
            document.write("Entering the loop!<br /> ");
            outerloop:        // This is the label name         
            for (var i = 0; i < 5; i++) {
               document.write("Outerloop: " + i + "<br />");
               innerloop:
               for (var j = 0; j < 5; j++) {
                  if (j > 3 ) break ;           // Quit the innermost loop
                  if (i == 2) break innerloop;  // Do the same thing
                  if (i == 4) break outerloop;  // Quit the outer loop
                  document.write("Innerloop: " + j + " <br />");
               }
            }        
            document.write("Exiting the loop!<br /> ");
         //-->
      </script>      
   </body>
</html>

输出

Entering the loop!
Outerloop: 0
Innerloop: 0 
Innerloop: 1 
Innerloop: 2 
Innerloop: 3 
Outerloop: 1
Innerloop: 0 
Innerloop: 1 
Innerloop: 2 
Innerloop: 3 
Outerloop: 2
Outerloop: 3
Innerloop: 0 
Innerloop: 1 
Innerloop: 2 
Innerloop: 3 
Outerloop: 4
Exiting the loop!

实施例2

<html>
   <body>
   
      <script type = "text/javascript">
         <!--
         document.write("Entering the loop!<br /> ");
         outerloop:     // This is the label name
         
         for (var i = 0; i < 3; i++) {
            document.write("Outerloop: " + i + "<br />");
            for (var j = 0; j < 5; j++) {
               if (j == 3) {
                  continue outerloop;
               }
               document.write("Innerloop: " + j + "<br />");
            }
         }
         
         document.write("Exiting the loop!<br /> ");
         //-->
      </script>
      
   </body>
</html>

输出

Entering the loop!
Outerloop: 0
Innerloop: 0
Innerloop: 1
Innerloop: 2
Outerloop: 1
Innerloop: 0
Innerloop: 1
Innerloop: 2
Outerloop: 2
Innerloop: 0
Innerloop: 1
Innerloop: 2
Exiting the loop!