cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Saya ingin bertanya kepada anda tentang promosi fungsi dalam JS?

Kod berikut:

function a() {
    console.log('1')
}    

(function() {
    console.log(a);
    if(1) {
        function a() {
            console.log('2');
        }
    }
})()

Selepas berjalan, output tidak ditentukan.

Selepas mengalih keluar keadaan if, output adalah fungsi kedua

function a() {
    console.log('1')
}    

(function() {
    console.log(a);

    // if(1) {
        function a() {
            console.log(2);
        }
    // }
})()

Mengetahui bahawa fungsi itu dipertingkatkan, dalam sekeping kod kedua, fungsi kedua akan dinaikkan pangkat sebelum kod console.log(a), jadi fungsi kedua dijalankan dan dikeluarkan.
Tetapi dalam sekeping kod pertama, saya tidak faham mengapa undefined dikeluarkan.

代言代言2754 hari yang lalu640

membalas semua(3)saya akan balas

  • 代言

    代言2017-06-12 09:32:06

    Pengisytiharan fungsi bersyarat diproses dengan cara yang sama seperti ungkapan fungsi. Oleh itu, pengisytiharan fungsi bersyarat kehilangan sifat angkat pengisytiharan fungsi.

    URL Rujukan: /q/10...

    balas
    0
  • 怪我咯

    怪我咯2017-06-12 09:32:06

    Apabila menggunakan kata kunci fungsi dalam pernyataan if else untuk mengisytiharkan fungsi, promosi pembolehubah adalah berbeza dalam pelayar yang berbeza. Cuma pengisytiharan pembolehubah dipromosikan di sini, dan jika lain dialih keluar, ia menjadi skop fungsi tulen.

    function a() {
        console.log('1')
    }    
    
    (function() {
        var a;
        console.log(a);
        if(1) {
            a = function a() {
                console.log('2');
            }
        }
    })()

    balas
    0
  • 学习ing

    学习ing2017-06-12 09:32:06

    Dalam IIFE anda

     if(1) {
      a = function a() {
        console.log('2')
      }
    } 

    ialah ungkapan fungsi, bukan pengisytiharan fungsi Apabila if dialih keluar, ia adalah pengisytiharan fungsi Jika tidak dialih keluar, conosle.log(a), a mewakili pembolehubah tidak ditentukan a, rujuk https://developer. mozilla.org ..

    balas
    0
  • Batalbalas