var num=0;
outermost: for(var i=0;i<10;i++)
{
for(var j=0;j<10;j++)
{
if(i==5 && j==5)
{
break outermost;
}
num++;
}
}
console.log(num); //Answers 55
这个东西是如何工作的我的意思是一旦J的值从0转换到1它进入J的循环,然后j循环将运行10次(我认为),那么这个循环怎么会破坏? 我很喜欢编程Yelp!
答案 0 :(得分:1)
输入break
语句时执行if
语句。
当if
评估为i==5 && j==5
时,会输入true
语句。
当i
等于5且j
等于5时,会发生这种情况。
要使i
达到5,外部循环必须运行5次(对于i = 0,1,2,4)。这意味着内环运行5 * 10 = 50次。要使j
在内循环的最后一次运行中达到5,内循环必须运行5次(对于j = 0,1,2,3,4)。总的来说,内循环必须运行55次,这意味着num
变量将保持55。
答案 1 :(得分:0)
将console.log(i + " " + j + " " + num);
放在内部循环中,if
之前。
它会显示你必须知道的一切。
答案 2 :(得分:0)
每次最外层循环迭代时,它会将i
增加1并将num
增加10(因为它位于内部循环内部,每次最外层循环迭代迭代10次,因此num
增加十倍)。当您到达第六次迭代时,i
为5且j
为0.内部循环迭代5次,这导致j
变为5.到目前为止num
已成为55.在下一次迭代中,if控件成功,实际上是i == 5 && j == 5
,打破了最外层循环,并使num
保持为55.由于num++
语句放在之后< / strong> if条件此第56次迭代将不会完成,并且不会将num
增加到56.但迭代次数约为55 + 1/2。
为什么j
在每次最外迭代后重置自己?因为它在循环中作用域,所以在每次最外面的迭代之后它都会被销毁并再次创建。