2016-04-14 4 views
0

Warum zeigt diese Warnung 9, aber nicht 5 oder eine andere Zahl?Schleife mit if- und break-Anweisungen

for (var i = 0; i < 9; i+=2) 
{ 
    if (++i == 5) break; 
    else continue; 
} 
alert(i++); 
+2

Da Sie Alarm außerhalb der Schleife aufrufen. Und zu dieser Zeit ist der Wert von i 9. Und es erfüllt niemals deine if-Bedingung. –

+0

Vielen Dank. – Alexey

Antwort

0

Sie erhöhen den Index mehrmals pro Schleife.

Im ersten Durchlauf ist die Variable 1, weil Sie 0 in Ihrem if Block inkrementieren.

Der nächste Durchlauf die Variable ist 3, weil Ihr Inkrementer in for Block.

Dann im if Block erhöhen Sie es bis 4.

Dann 6 aus dem for Zuwachs.

Dann 7 von der if Inkrement.

Dann 9 von der for Inkrement und die for ist nicht mehr gültig und bricht.

1

Dies sollte 4 funktionieren Sie wie erwartet.

for (var i = 0; i < 9; i+=2) 
{ 
    if (i++ == 5) { 
    alert(i++); 
    }; 
    else continue; 
} 

Sie werden alarmiert, wenn i Wert 4.

1

Da die if statement in Ihrem for loop Körper wird nicht ausgewertet werden, um true sein wird.

Wie unten wird Ihr Code ausgeführt werden.

Iteration 1

if(1 == 5) //false 

Iteration 2

if(4 == 5) //false 

Iteration 3

if(7 == 5) //false 

Nach dem dritten Iteration, i wird 9 daher wird die FOR-Schleife-Bedingung an diesem Punkt fehlschlagen und die Schleife endet. Dann außerhalb der Schleife wird der Alarm i Wert als 9 drucken.

1

Es ist, weil innerhalb Ihrer Schleife, ich nie 5 ist, wenn die if (++i == 5) break Überprüfung passiert.

In der ersten Iteration ist i 0. Aber dann wird aus ++i 1, also bin ich in der zweiten Iteration gleich 3 am Anfang der Schleife. Dann ++1 macht ich gehe zu 4, so bei der nächsten Iteration ist es über 5 übersprungen (daher bricht es nie) und 6 werden.

Es warnt 9, denn wenn das ist, was ich übrig ist, wenn Ihre Schleife beendet ist .

Verwandte Themen