我的代码大致如下:
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从多个地方递归调用,但是,如果下一个打印“内部循环底部”的原因,因为该方法再次以递归方式启动,它将不会首先打印“循环底部”!但是“在循环之前”然后是“外环顶部”,然后将打印“内环顶部”和那么“内环底部”。根据打印语句,它从两个循环中断开然后跳回到内循环的底部并继续循环通过内循环。到底是怎么回事。请帮忙!谢谢
答案 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