suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Das Problem mit Schließungen in js. Ich hatte letzte Nacht damit zu kämpfen und bin jetzt fast tot.

Da ich gerade erst angefangen habe, etwas über Schließungen zu lernen, habe ich viele Dinge nicht verstanden. Wie hast du das undefined in die Konsole bekommen, wie im Bild gezeigt? Ich habe nur die Rückgabefunktion ausgeführt. Warum gibt es zwei Ausführungsergebnisse? Leute, bitte erklärt es im Detail~

迷茫迷茫2815 Tage vor689

Antworte allen(6)Ich werde antworten

  • 某草草

    某草草2017-06-05 11:15:08

    你可以重最低下兩段代碼可以說起
    var result = f1(); 變量指向函數
    console.log(result()) 其實可以轉話為 f1()()
    即函數執行 f1()返回的函數,即f2() 所以首先會執行 f1()下的f2() 函數 再執行f1()
    所以首先console.log(n)1
    在執行函數f1()時候return f2 ,但由於函數沒有對返回值,所以打印出undefined

    Antwort
    0
  • 世界只因有你

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

    实质上就是

    var n = 1;
    function f2() {
        console.log(n);
    }
    
    console.log(f2())

    因为你f2并没有返回值,所以就是undefined

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-05 11:15:08

    console.log(result())
    先输出1, 因为result()调用了f2()
    在输出undefined, 因为result()没有返回值

    Antwort
    0
  • 为情所困

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

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

    建议你看下这个

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-06-05 11:15:08

    首先 result=f1(); 此时result=f2;
    然后console.log(result());先执行result也就是f2 打印了n的值因为你没有执行test,所以n为1所以打印的是 1 然后 执行 console.log(result());因为result()没有返回值所以是undefined。

    Antwort
    0
  • 世界只因有你

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

    console.log(console.log())肯定是undefined,大兄弟

    Antwort
    0
  • StornierenAntwort