Auslöser dieser Frage war das laufende Ergebnis eines js-Programms:
var i = 0;
function a(){
for(i=0;i<20;i ){
}
}
function b(){
for (i=0;i<3;i ){
a();
return i;
}
var Result = b(); 🎜>
Das laufende Ergebnis dieses Programms ist Result = 21;
Aus diesem Programm können wir ersehen, dass der Wert von i 20 ist, wenn die a-Funktion zurückkehrt, was kein Problem darstellt.
Wenn die b-Funktion zurückkehrt, ist es eine Diskussion wert, ob der Wert von i 20 oder 21 ist.
Der Kern des Problems ist: Sollte ich zuerst beurteilt werden, i<3, oder ich zuerst, und dann beurteilen, ob i<3?
Anhand der Ausführungsergebnisse ist ersichtlich, dass i wurde zuerst hingerichtet.
für (i= 0;i<20;i ){
// Es gibt keine Variable i
//Das i hier ist eine globale Variable, auf die jeder zugreifen kann
}
}
Funktion b(){
for(i=0;i<3;i ){
//alert(i);//In ähnlicher Weise ist i hier auch eine globale Variable, die 0 und nur einmal zurückgibt
a();// Der Rückgabewert dieser Funktion ist i=20
//Wenn i=20 durch i und dann i=21 geht, ist die Bedingung von i<3 nicht erfüllt und wird direkt beendet. Geben Sie also i=21 zurück, was normal ist!
}
return i;
}
var Result = b();
Hier vervollständigen wir die Ausführungssequenz der for-Schleife:
Mit Folgendem Programm Zum Beispiel:
{
}
Zuerst i=0;i<10; ausführen und dann die erste Runde der Schleife ausführen
und dann ausführen : i ,i<10; dann Führe die zweite Runde des Schleifenkörpers
aus, bis i >= 10 nach dem letzten i, an welchem Punkt die Schleife endet.
Das heißt,
Anweisung 1 wird ausgeführt, bevor die Schleife (Codeblock) beginnt
Anweisung 2 definiert die Bedingungen für die Ausführung der Schleife (Codeblock). >
Anweisung 3 befindet sich in „Ausgeführt“, nachdem die Schleife (Codeblock) ausgeführt wurde