2017-03-22 6 views
-1

Ich habe versucht, eine while-Schleife innerhalb einer for-Schleife zu verwenden, aber jedes Mal, wenn ich dies versuche, stürzt mein Browser ab. Ich weiß, dass das passiert, wenn die Schleife unendlich ist, aber ich kann nicht herausfinden, warum.Während Schleife innerhalb einer for-Schleife nicht funktioniert

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

Da 'i' nicht innerhalb der' while'-Schleife geändert wird, wird diese Schleife niemals gestoppt. – Titus

+1

Wann haben Sie erwartet, dass die 'while'-Schleife stoppt? Meinst du "wenn"? Oder was für eine Gesamtkonsolenausgabe haben Sie sich gewünscht? – Bergi

+1

es wird nie aufhören, wie ich nie mehr als 2 in Ihrer Schleife sein wird und Ihr Browser wird nicht mehr reagieren. –

Antwort

3

Das Problem der while-Schleife ist, einmal i 0 wird, es wird nie der while-Schleife herauskommen (Da es weniger als 2)

Mögliche Lösungen:.

Lösung 1: entfernen der während Schleife im Inneren des für Schleife

SOLUTION 2: Griff in der Zeit, und brechen nach

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

LÖSUNG 3: den Wert von i ändern> = 2 innerhalb der while-Schleife, so dass die Schleife bricht

+0

Danke tolle Erklärung, habe nicht daran gedacht, die While-Schleife stecken, so dass ich nicht ++ –

1

Was passiert, ist Ihre While-Schleife endet nie; Der Wert von i ändert sich nie innerhalb der Schleife, so dass die Schleife für immer fortgesetzt wird.

Vielleicht, was Sie suchen, war protokollieren die Nachricht "ich bin es", wenn ich in der for-Schleife war < 2. In diesem Fall können Sie eine einfache if-Anweisung verwenden, so dass Ihr Code etwas wie liest dies:

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

ich würde empfehlen, mit den Zahlenwerten herum spielen und testen sie es aus einem besseren Gefühl dafür, wie JS Syntax Arbeiten zu bekommen.

4

Sie Schleife die While-Schleife für immer, weil i behält den Wert und wird nie im Inneren geändert.

Ich denke, Sie könnten besser eine if-Anweisung verwenden, um die zusätzliche Ausgabe zu erhalten.

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

+0

Danke, wird Ihre Antwort nach dem Timer akzeptieren! –

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"); 
     } 
    } 

ändern es so etwas wie die Variable folgende Verwendung SECON, wenn Sie in der während der Abschnitt zur Schleife möchten.

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