javascript - Isu mengenai penutupan dalam js Saya bergelut dengannya malam tadi dan hampir mati sekarang.
迷茫
迷茫 2017-06-05 11:13:08
0
6
650

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~

迷茫
迷茫

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

membalas semua(6)
某草草

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 ,但由於函數沒有對返回值,所以打印出undefinedconsole.log(result()) Malah, anda boleh menukar perbualan Untuk f1()()

iaitu, fungsi yang dikembalikan dengan melaksanakan 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 🎜
世界只因有你

Pada asasnya

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

console.log(f2())

Kerana f2 anda tidak mengembalikan nilai, jadi ia tidak ditentukan

伊谢尔伦

console.log(result())
Output pertama 1, kerana result() memanggil f2()
Kemudian output tidak ditentukan, kerana result() tidak mempunyai nilai pulangan

为情所困

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

Saya cadangkan anda membaca ini

大家讲道理

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.

世界只因有你

console.log(console.log()) mestilah tidak ditentukan, abang

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan