cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Isu mengenai penutupan dalam js Saya bergelut dengannya malam tadi dan hampir mati sekarang.

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~

迷茫迷茫2734 hari yang lalu648

membalas semua(6)saya akan balas

  • 某草草

    某草草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 ,但由於函數沒有對返回值,所以打印出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 🎜

    balas
    0
  • 世界只因有你

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

    balas
    0
  • 伊谢尔伦

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

    balas
    0
  • 为情所困

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

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

    Saya cadangkan anda membaca ini

    balas
    0
  • 大家讲道理

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

    balas
    0
  • 世界只因有你

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

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

    balas
    0
  • Batalbalas