break语句不起作用

时间:2013-04-03 12:31:16

标签: break

我的代码大致如下:

START  
Recursive method A  
    print("Before Loop")  
    loop:  
    for(Object o: list)  
    {  
          print("Outer loop top")  
       for(Object ob: list2)   
       {  
                 print("Inner loop top")  
          //do stuff with o & ob e.g. recursively call method A under certain conditions  
          if(someCondition true)  
          {  
              print("Entered")  
            break loop;  
          }  
                 print("Inner loop bottom")  
        }   
          print("Outer loop bottom")  
    }  

print("After Loop")  

END  

当程序进入ifCondition为true的if语句时,它会打印

Entered  

然后它似乎在下一次打印时成功地从两个for循环中断开

After Loop  

然后!!在控制台中打印

inner loop bottom  
Outer Loop bottom  
Outer loop top  
inner loop top  
etc.  

这怎么可能。方法A从多个地方递归调用,但是,如果下一个打印“内部循环底部”的原因,因为该方法再次以递归方式启动,它将不会首先打印“循环底部”!但是“在循环之前”然后是“外环顶部”,然后将打印“内环顶部”和那么“内环底部”。根据打印语句,它从两个循环中断开然后跳回到内循环的底部并继续循环通过内循环。到底是怎么回事。请帮忙!谢谢

1 个答案:

答案 0 :(得分:0)

使用不带标签的break会破坏当前正在执行的最内层循环。

对标签foo使用break会破坏标记为foo的语句。

https://developer.mozilla.org/en/JavaScript/Reference/Statements/break

break语句包含一个可选标签,允许程序打破带标签的语句。 break语句需要嵌套在这个带标签的语句中。带标签的语句可以是任何块语句;它不必以循环语句开头。

致谢:what the difference between break with label and without label in javascript