在if循环中包含的if语句中的break语句?

时间:2013-09-28 18:13:45

标签: javascript

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!

3 个答案:

答案 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在每次最外迭代后重置自己?因为它在循环中作用域,所以在每次最外面的迭代之后它都会被销毁并再次创建。