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++);
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++);
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.
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.
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.
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 .
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. –
Vielen Dank. – Alexey