2013-09-28 215 views
-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!if语句中包含嵌套for循环的break语句吗?

+0

你可以这样读:'break outermost;'loop。 –

回答

1

当输入if语句时,会执行break语句。

i==5 && j==5评估为true时,输入if语句。

当这种情况发生i等于5 AND 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.

+0

不,我的问题是,当我进入循环的值增加一个,然后我们进入第二个循环,运行10次然后再次外部循环增加到两个然后如何来我和j的价值将五同样的例子.. – neutrino

+0

每次输入内循环时,'j'的值都被设置为0。 – Joni

0

console.log(i + " " + j + " " + num);放在内循环内,在if之前。

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

0

每次由一个和num十增加i最外循环迭代(因为它是内循环,它迭代十倍每最外循环迭代内,所以num增加十倍)的时间。当你到达第六次迭代时,i为5,j为0.内循环迭代5次,这导致j变为5.到目前为止,num已经变为55.在下一次迭代中,if控制成功,实际上i == 5 && j == 5,中断因为num++语句放在之后 if条件第56次迭代将不会完成,并且不会将num增加到56.但迭代大约是55 + 1/2。

为什么j在每次最外迭代后都会重置?因为它在循环内部有作用域,所以在每个最外层的迭代之后它会被销毁并重新创建。