Rumah > Soal Jawab > teks badan
Oleh kerana saya baru mula belajar tentang penutupan, saya tidak faham banyak perkara. Bagaimana anda mendapatkan undefined
dalam konsol seperti yang ditunjukkan dalam gambar? Saya hanya melaksanakan fungsi pulangan, mengapa terdapat dua hasil pelaksanaan? Guys tolong terangkan secara terperinci~
某草草2017-06-05 11:15:08
Anda boleh mengulangi dua keping kod berikut untuk bermula dengan var result = f1();
Pembolehubah menghala ke fungsi var result = f1();
變量指向函數console.log(result())
其實可以轉話為 f1()()
即函數執行 f1()
返回的函數,即f2()
所以首先會執行 f1()
下的f2()
函數 再執行f1()
所以首先console.log(n)
即1
在執行函數f1()
時候return f2
,但由於函數沒有對返回值,所以打印出undefined
console.log(result())
Malah, anda boleh menukar perbualan Untuk f1()()
f1()
, iaitu, f2()
, jadi f1 akan dilaksanakan dahulu Fungsi f2()
di bawah ()
kemudian laksanakan f1()
🎜Jadi dahulu console.log(n)
ialah 1
🎜Apabila melaksanakan fungsi f1()
, return f2
dicetak, tetapi sejak fungsi tidak mengembalikan nilai, undefined
dicetak 🎜世界只因有你2017-06-05 11:15:08
Pada asasnya
var n = 1;
function f2() {
console.log(n);
}
console.log(f2())
Kerana f2 anda tidak mengembalikan nilai, jadi ia tidak ditentukan
伊谢尔伦2017-06-05 11:15:08
console.log(result())
Output pertama 1, kerana result() memanggil f2()
Kemudian output tidak ditentukan, kerana result() tidak mempunyai nilai pulangan
大家讲道理2017-06-05 11:15:08
Hasil pertama=f1(); Pada masa ini, hasil=f2;
Kemudian console.log(hasil()); ialah 1, jadi apa yang dicetak ialah 1 Kemudian jalankan console.log(result()); kerana result() tiada nilai pulangan, ia tidak ditentukan.