javascript – Das Problem mit Schließungen in js. Ich hatte letzte Nacht damit zu kämpfen und bin jetzt fast tot.
迷茫
迷茫 2017-06-05 11:13:08
0
6
682

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~

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

Antworte allen(6)
某草草

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

世界只因有你

实质上就是

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

console.log(f2())

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

伊谢尔伦

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

为情所困

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

建议你看下这个

大家讲道理

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

世界只因有你

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage