2017-03-22 140 views
-1

我試圖在for循環中使用while循環,但是每次嘗試時都會導致瀏覽器崩潰。我知道這發生在循環無限時,但我似乎無法弄清楚爲什麼。雖然for循環內部的循環無法正常工作

for(i=0;i < 2; i++) 
{ 
    console.log("hello"); 
    while(i < 2) 
    { 
    console.log("it's me"); 
    } 
} 
+4

由於'i'在while循環中沒有改變,這個循環永遠不會停止。 – Titus

+1

你什麼時候預期'while'循環停止?你是不是指「如果」?或者你想要什麼樣的整體調音臺輸出? – Bergi

+1

它永遠不會停止,因爲我永遠不會在循環中超過2,並且您的瀏覽器將無響應。 –

回答

3

問題是while循環,一旦i變爲0,就再也回不來了while循環的(因爲它是小於2)

可能的解決方案:

解決方案1 ​​:刪除循環目前循環

SOLUTION 2:處理而內部,並且做一些

 for(i=0;i < 2; i++) 
     { 
      console.log("hello"); 
      while(i < 2) 
      { 
      console.log("i < 2"); 
      break; 
      } 
     } 

解決方案3之後打破:更改I的> = 2的while循環中的值,使得在環斷裂

+0

感謝偉大的解釋,沒有想過while循環被卡住,所以我不會++ –

1

發生什麼事是你的while循環永遠不會結束;我的價值永遠不會在循環內部發生變化,所以循環會一直持續下去。

也許你在做的是記錄消息「這是我」,當我,在for循環,是< 2.在這種情況下,你可以使用一個簡單的if語句,這樣你的代碼讀取類似這個:

for(var i=0;i<2;i++){ 
console.log("hello"); 
if(i<2) console.log("it's me"); 
} 

我建議玩弄數字值並測試它以獲得更好的JS語法工作方式。

4

您永遠循環while循環,因爲i保持該值並且永遠不會在內部進行更改。

我想你可能會使用更好的if語句來獲得額外的輸出。

var i; 
 
for (i = 0; i < 2; i++) { 
 
    console.log("hello"); 
 
    if (i < 2) { 
 
     console.log("it's me"); 
 
    } 
 
}

+0

謝謝,定時器後會接受你的答案! –

0
for(i=0;i < 2; i++) 
    { 
     console.log("hello"); 
     while(i < 2) 
     { 
    //Once this block is entered, value of i is never changed and the condition 
    //is always true. 
     console.log("it's me"); 
     } 
    } 

將其更改爲類似下面使用塞康變量,如果要循環中,而部分。

for(i=0;i < 2; i++) 
     { 
      console.log("hello"); 
      j=0; 
      while(j < 2) 
      { 
      j++; 
      console.log("it's me"); 
      } 
     }