javascript - Question sur la raison pour laquelle la valeur de i est égale à 5
欧阳克2017-06-12 09:29:37
0
8
904
(function(){
for(var i = 0; i < 5; i++) {}
console.log(i) // i = 5
})()
Première question : à quelle partie de la connaissance js cela appartient-il ? Deuxième question : Expliquez en termes simples pourquoi i est égal à 5 ? 0o0
Ce problème est-il une fermeture ? Je ne pense pas que ce soit une fermeture, et il n'y a pas d'imbrication de fonctions C'est un problème de variables locales de fonction et de fonctions anonymes.
.
Créer une fonction anonyme et l'exécuter immédiatement n'implique pas de fermetures, juste la fin de la boucle, i 的值变成 5 退出循环, console.log(i)打印当前的 i, qui est 5.
.
Cela équivaut à :
var test = function() {
for(var i = 0; i < 5; i++) {}
console.log(i) // i = 5
}
test();
Il s'agit d'un problème causé par le fait que js n'a pas de portée au niveau du bloc, uniquement une portée de fonction. . . Ju peut directement tirer la fermeture. . . Je l'accepte. . .
Il n'existe pas de portée au niveau du bloc en JavaScript, donc les variables à l'intérieur de la boucle for {} et de l'instruction if {} sont accessibles de l'extérieur.
La portée est divisée en portée mondiale et portée locale
La portée globale est intégrée par le système pour vous lorsque vous créez un document. La portée locale est obtenue en créant une fonction.
Ce problème est-il une fermeture ? Je ne pense pas que ce soit une fermeture, et il n'y a pas d'imbrication de fonctions C'est un problème de variables locales de fonction et de fonctions anonymes.
.Créer une fonction anonyme et l'exécuter immédiatement n'implique pas de fermetures, juste la fin de la boucle,
.i
的值变成5
退出循环,console.log(i)
打印当前的i
, qui est 5.Cela équivaut à :
Ceci n'est pas une fermeture, c'est juste une valeur imprimée après la vitesse de la boucle for
Il s'agit d'un problème causé par le fait que js n'a pas de portée au niveau du bloc, uniquement une portée de fonction. . . Ju peut directement tirer la fermeture. . . Je l'accepte. . .
Il n'existe pas de portée au niveau du bloc en JavaScript, donc les variables à l'intérieur de la boucle for {} et de l'instruction if {} sont accessibles de l'extérieur.
La portée est divisée en portée mondiale et portée locale
La portée globale est intégrée par le système pour vous lorsque vous créez un document.
La portée locale est obtenue en créant une fonction.
Cela apparaît généralement dans le problème de l'examen des fermetures
i + 1 a bouclé 5 fois, donc i est 5
Vous devriez vouloir en savoir plus sur les fermetures en js
Étant donné que l'exécution de la boucle for est terminée lorsque console.log est exécuté, i est naturellement égal à 5
Jetons un coup d'œil aux fermetures combinées avec des minuteries ou à la liaison d'événements
Fermetures en js,