2016-08-29 55 views
0

我有一個關於嵌套循環如何在JavaScript中工作的問題。嵌套JavaScript自然循環如何破解

想象一下,我有while()循環...並且內部是for()循環。每個都有自己獨立的結束條件(見下面的原理圖)。

我的問題是這樣的:即使while()循環中的for()循環尚未完成,while()循環是否會停止INSTANT的結束條件?這是一個例子。

var i = 0; 
while (i < somenumber){ 
    for(var j=0; j < othernumber; j++){ 
     somecode(); 
     i++: 
    } 
} 

該代碼似乎工作,但我想確保我明白這些結構應該如何工作。我們的目標是讓while循環(以及for循環)停止'i'達到'somenumber'的時刻,即使j還沒有達到'othernumber'。

+3

添加一些記錄和測試它 – Li357

+1

第一。然後for循環開始。 for循環繼續前進,直到它小於'othernumber'。一旦發生這種情況,你的'while'循環再次啓動。然後'for'循環再次啓動。這種情況持續發生,直到'i = somenumber' –

+1

它可能有助於console.log'while'和'for'內的值,以查看真正發生了什麼。或者,我建議在一張紙上畫一張桌子並寫下價值圖。 –

回答

1

我建議你測試代碼,看看它有什麼作用。 Here我用任意數字進行了測試,似乎表明while循環不會終止滿足條件的瞬間。它讓工作完成。這裏有一個解釋:

最初,條件是真的,所以它進入while循環。一旦進入while循環,它不會檢查條件是否爲真,直到下一次迭代,這意味着即使條件爲假,它也不會停止執行for循環。下面是測試代碼:

var i = 0; 
while (i < 5){ 
    for(var j=0; j < 10; j++){ 
     console.log(j + ", iter= " + i); 
     i++; 
    } 
} 

這產生了:

0, iter= 0 
1, iter= 1 
2, iter= 2 
3, iter= 3 
4, iter= 4 
5, iter= 5 
6, iter= 6 
7, iter= 7 
8, iter= 8 
9, iter= 9 

從上面的輸出,我們看到的循環還沒有結束。它繼續進行下去,因爲儘管while循環的條件是錯誤的,但直到下一次迭代纔會檢查它是否爲真,從而允許for循環結束。

1

tested it for you

var i = 0; 
while (i < 10){ 
    for(var j=0; j < 12; j++){ 
     somecode(j); 
     i++; 
    } 
    console.log('i',i); 
} 

function somecode(j) { 
    console.log('in the for loop', j); 
} 

整個for循環被執行,然後在while循環最終console.log進行評價。

1

每個循環都會檢查當前迭代結束時的情況(當循環到達右括號時)。停止環路循環的唯一方法就是讓這樣的事情:

for(var j=0; j < othernumber; j++){ 
    somecode(); 
    i++; 
    if (!(i < somenumber)) break; //it exits the for loop 
} 

當退出for循環,達到while循環的結束括號,它將檢查而條件和退出環