2012-10-15 224 views
0

我正確地認爲,如果第一個if語句和嵌套,如果在else語句中都失敗了,我然後回到第一個for循環,並且遞增i 1?其他語句嵌套if

所以我可以繼續直到j < totalCols失敗,即使if或else語句都沒有執行?

var rowCount = []; 
for (var i = 0; i < totalRows; i++) { 
    rowCount[i]=""; 
    spaceCount = 0; 

    for (var j = 0; j < totalCols; j++) { 
     if (puzzle[i][j] == "#") { // if this fails? 
     spaceCount++; 
     if (j == totalCols-1) rowCount[i] += spaceCount + "&nbsp;&nbsp;"; 
     } else { 
     if (spaceCount > 0) { //and this fails? 
      rowCount[i] += spaceCount + "&nbsp;&nbsp;"; 
      spaceCount = 0; 
     } 
     }  
    } 

} 
+0

所以我可以繼續下去,直到j KMcA

回答

2

不,如果其中任何一個if語句失敗,您仍處於遞增j的內循環中。爲了擺脫內部循環,您需要使用break聲明。

+0

Justin,所以我可以繼續操作,直到j KMcA

+0

那麼,他們會執行'j'循環的每一次迭代... –

+0

賈斯汀,我很抱歉,但現在我很困惑你的第二個評論。如果兩個語句都返回false,它們如何執行?比如when(puzzle [i] [j] ==「#」)返回false,並且(spaceCount> 0)也返回false?僅供參考...我是非常新的,並且只見過有默認聲明的情況。 – KMcA

0

如果if語句失敗嵌套if將不會執行。它轉到else塊,循環繼續,直到滿足條件i < totalRows

如果if語句通過並且嵌套if失敗,則循環仍會繼續,直到滿足i < totalRows

如果兩個if語句都通過循環,則繼續條件,直到滿足total123爲止。

我在說的實質上是嵌套循環中的if語句與外層循環無關。

1

不,你先完成循環第二個循環,從而增加j。

for (var j = 0; j < totalCols; j++) { 

只有當你完成這個循環,你會回到第一個,並增加我。

0

您可以使用break語句來實現此行爲。 編輯:應該先閱讀答案。