Ce qui a déclenché cette question, c'est le résultat d'exécution d'un programme js :
var i = 0;
fonction a(){
for(i=0;i<20;i ){
}
}
fonction b(){
for (i=0;i<3;i ){
a();
}
return i;
}
var Résultat = b(); 🎜>
Le résultat d'exécution de ce programme est Résultat = 21
À partir de ce programme, nous pouvons voir que la valeur de i est 20 lorsque la fonction a revient, ce qui ne pose pas de problème.
Lorsque la fonction b revient, la question de savoir si la valeur de i est 20 ou 21 mérite d'être discutée.
L'essence du problème est la suivante : dois-je être jugé en premier, i<3, ou i d'abord, puis juger si i<3
Selon les résultats de l'exécution, on peut voir que je. a été exécuté le premier.
fonction a(){
pour (i= 0;i<20;i ){
// Il n'y a pas de var i
//Le i ici est une variable globale à laquelle tout le monde peut accéder
}
}
fonction b(){
for(i=0;i<3;i ){
//alert(i);//De même, i voici aussi une variable globale, renvoyant 0 et une seule fois
a();// La valeur de retour de cette fonction est i=20
//Quand i=20 passe par i puis i=21, alors la condition de i<3 n'est pas remplie et sort directement. Renvoyez donc i=21, ce qui est normal !
}
return i;
}
var Result = b();
Ici, nous complétons la séquence d'exécution de la boucle for :
Avec ce qui suit programme Par exemple,
for(int i= 0;i<10 ;i )
{
}
Exécutez d'abord i=0;i<10; puis exécutez le premier tour de la boucle
puis exécutez : i ,i<10; then Exécutez le deuxième tour du corps de la boucle
jusqu'à ce que i >= 10 après le dernier i, moment auquel la boucle se termine.
C'est-à-dire que
l'instruction 1 est exécutée avant le début de la boucle (bloc de code).
l'instruction 2 définit les conditions d'exécution de la boucle (bloc de code). >
l'instruction 3 est dans Exécuté après l'exécution de la boucle (bloc de code)