2017-03-22 15 views
-1

forループ内でwhileループを使用しようとしましたが、毎回これを試みるとブラウザがクラッシュします。私はループが無限であるときにこれが起こることを知っていますが、私は理由を理解できないようです。forループ内のwhileループは動作しません

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

問題はiが0になると、それはwhileループから出てくることはありません、whileループである(それが2未満であるので)

考えられる解決策:

液1:ループ

ため 内部 whileループの存在を削除

SOLUTION 2:しばらくインサイドハンドル、そして何か

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

SOLUTION 3やった後破る:、ループは

を破るように、whileループ内でI> = 2の値を変更し
+0

ありがとうすばらしい説明、whileループがついているとは考えていないので、私はそうしません++ –

1

あなたのwhileループは決して終わりません。私はループの中で決して変化しないので、ループは永遠に続く。

多分、forループで私が<だったときにメッセージ "ログオン"を記録していたかもしれません。その場合、単純なif文を使用して、これは

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

JSの構文がどのように機能するかを理解するために数値の値を試してテストすることをおすすめします。

4

iは値を保持し、内部では決して変更されないので、whileループは永遠にループします。

追加の出力を得るには、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"); 
     } 
    } 

あなたはしばらくのセクションでループしたい場合はseconの変数を使用して、以下のようなものに変更し、それを。 。

for(i=0;i < 2; i++) 
     { 
      console.log("hello"); 
      j=0; 
      while(j < 2) 
      { 
      j++; 
      console.log("it's me"); 
      } 
     } 
関連する問題