Maison  >  Questions et réponses  >  le corps du texte

javascript - Le problème des fermetures dans js. J'ai eu du mal à le résoudre hier soir et je suis presque mort maintenant.

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 ~

迷茫迷茫2692 Il y a quelques jours618

répondre à tous(6)je répondrai

  • 某草草

    某草草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 ,但由於函數沒有對返回值,所以打印出undefinedconsole.log(result()) En fait, vous pouvez changer la conversation pour f1()()

    c'est-à-dire la fonction renvoyée en exécutant 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é 🎜.

    répondre
    0
  • 世界只因有你

    世界只因有你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

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦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

    répondre
    0
  • 为情所困

    为情所困2017-06-05 11:15:08

    http://www.liaoxuefeng.com/wi...

    Je vous suggère de lire ceci

    répondre
    0
  • 大家讲道理

    大家讲道理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.

    répondre
    0
  • 世界只因有你

    世界只因有你2017-06-05 11:15:08

    console.log(console.log()) doit être indéfini, grand frère

    répondre
    0
  • Annulerrépondre