我的代码大致如下所示:
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 当程序输入someCondition为true的if语句时,它会打印
Entered 然后,在下一次打印时,它似乎成功地脱离了这两个for循环
After Loop 然后!!在控制台中打印
inner loop bottom
Outer Loop bottom
Outer loop top
inner loop top
etc. 这怎么可能。方法A是从一个以上的地方递归调用的,但是,如果因为该方法再次递归地开始,所以接下来打印“内部循环底部”的原因,那么它不会首先打印‘inner bottom’!但是“前循环”,然后是“外循环顶部”,然后是“内循环顶部”,然后是“内循环底部”。根据print语句,它从两个循环中断,然后跳回内部循环的底部,继续循环内部循环。这是怎么回事。请帮帮我!谢谢
发布于 2013-04-03 20:40:05
使用不带标签的break会中断当前正在执行的最里面的循环。
使用带有标签foo的break会中断标签为foo的语句。
https://developer.mozilla.org/en/JavaScript/Reference/Statements/break
break语句包括一个可选标签,该标签允许程序中断已标记的语句。break语句需要嵌套在这个带标签的语句中。带标签的语句可以是任何块语句;它的前面不一定要有loop语句。
致词:what the difference between break with label and without label in javascript
https://stackoverflow.com/questions/15787433
复制相似问题