Maison > Questions et réponses > le corps du texte
Parce que je viens juste de commencer à apprendre les fermetures, je n'ai pas compris beaucoup de choses. Comment avez-vous obtenu le undefined
dans la console comme indiqué sur l'image ? J'ai seulement exécuté la fonction return, pourquoi y a-t-il deux résultats d'exécution ? Les gars, veuillez expliquer en détail ~
某草草2017-06-05 11:15:08
Vous pouvez répéter les deux morceaux de code suivants pour commencer par var result = f1();
La variable pointe vers la fonction var result = f1();
變量指向函數console.log(result())
其實可以轉話為 f1()()
即函數執行 f1()
返回的函數,即f2()
所以首先會執行 f1()
下的f2()
函數 再執行f1()
所以首先console.log(n)
即1
在執行函數f1()
時候return f2
,但由於函數沒有對返回值,所以打印出undefined
console.log(result())
En fait, vous pouvez changer la conversation pour f1()()
f1()
, c'est-à-dire f2()
, donc f1 sera exécuté en premier. La fonction f2()
sous ()
exécute ensuite f1()
🎜Donc d'abord console.log(n)
vaut 1
🎜Lors de l'exécution de la fonction f1()
, return f2
est imprimé, mais comme le la fonction ne renvoie pas de valeur, undefined
est imprimé 🎜.世界只因有你2017-06-05 11:15:08
Essentiellement
var n = 1;
function f2() {
console.log(n);
}
console.log(f2())
Parce que votre f2 ne renvoie pas de valeur, il n'est donc pas défini
伊谢尔伦2017-06-05 11:15:08
console.log(result())
Première sortie 1, car result() appelle f2()
Ensuite, la sortie n'est pas définie, car result() n'a pas de valeur de retour
大家讲道理2017-06-05 11:15:08
First result=f1(); À ce moment, result=f2;
Puis console.log(result()); Exécutez d'abord le résultat, qui est f2, et imprimez la valeur de n Parce que vous n'avez pas exécuté le test, n. est 1, donc ce qui est imprimé est 1. Ensuite, exécutez console.log(result()); car result() n'a pas de valeur de retour, elle n'est pas définie.