-3
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!

4

3 回答 3

1

输入break语句时执行该if语句。

计算结果为 时输入该if语句。i==5 && j==5true

i等于 5 ANDj等于 5 时会发生这种情况。

为了i达到 5,外部循环必须运行 5 次(对于 i = 0、1、2、4)。这意味着内部循环运行 5*10 = 50 次。为了j在内部循环的最后一次运行中达到 5,内部循环必须运行 5 次(对于 j = 0、1、2、3、4)。总共,内部循环必须运行 55 次,这意味着num变量将保持 55。

于 2013-09-28T18:16:58.840 回答
0

放入console.log(i + " " + j + " " + num);内循环, before if

它会显示你必须知道的一切。

于 2013-09-28T18:20:16.260 回答
0

每次最外层循环迭代时,它都会增加i一和num十(因为它在内部循环内,每次最外层循环迭代迭代十次,所以num增加十次)。当你到达第六次迭代i是5,j是0。内部循环迭代5次,导致j变成5。到现在num已经变成55。在下一次迭代中,if控制成功,实际上i == 5 && j == 5打破了最外层循环,并且剩下num55。由于num++语句放在if 条件之后,所以第 56 次迭代不会完成,也不会增加到num56。但是迭代大约是 55 + 1/2。

为什么j每次最外层迭代后都会重置自己?因为它是在循环内限定的,所以在每次最外层迭代之后它都会被销毁并再次创建。

于 2013-09-28T18:20:38.747 回答