Ce qui a causé ce problème est le résultat de la fonction d'un programme JS:
La copie de code est la suivante:
var i = 0;
fonction a () {
pour (i = 0; i <20; i ++) {
}
}
fonction b () {
pour (i = 0; i <3; i ++) {
un();
}
retour i;
}
Var Result = b ();
Le résultat de ce programme en cours d'exécution est le résultat = 21;
À partir de ce programme, nous pouvons voir qu'il n'y a aucun problème que la valeur de I est de 20 lorsque la fonction A renvoie.
Lorsque la fonction B revient, il vaut la peine de discuter de la valeur de la valeur de I est de 20 ou 21.
L'essence du problème est: Déterminez d'abord si I <3 ou I ++ est effectué d'abord, puis déterminez si I <3.
Selon les résultats de l'exécution, on peut voir que I ++ a été exécuté en premier.
La copie de code est la suivante:
fonction a () {
pour (i = 0; i <20; i ++) {
// pas var i
// Le i ici est la variable globale à laquelle tout le monde peut accéder
}
}
fonction b () {
pour (i = 0; i <3; i ++) {
// alerte (i); // De même, je suis également une variable globale, renvoyant 0 et une seule fois
a (); // cette fonction renvoie i = 20
// Lorsque i = 20 passe i ++ et i = 21, alors il ne remplit pas les conditions de i <3 et sort directement. Alors retournez i = 21 c'est normal!
}
retour i;
}
Var Result = b ();
Ici, nous terminons l'ordre d'exécution de la boucle pour:
La procédure suivante est un exemple
La copie de code est la suivante:
pour (int i = 0; i <10; i ++)
{
}
Effectuez d'abord i = 0; i <10; puis effectuer le premier cycle du corps de boucle
Puis exécutez: i ++, i <10; puis exécutez le deuxième tour du corps de boucle
Jusqu'à la dernière i ++ après i> = 10, la boucle se termine.
Tout de suite
L'énoncé 1 est exécuté avant le début de la boucle (bloc de code)
L'énoncé 2 définit les conditions d'exécution d'une boucle (bloc de code)
L'instruction 3 s'exécute après l'exécution de la boucle (bloc de code)