Skop dan Pengangkat Fungsi Javascript: Membongkar Misteri
Dalam bidang JavaScript, memahami skop dan pengangkatan fungsi adalah penting untuk membongkar kod kompleks . Mari kita teliti contoh yang mencetuskan persoalan, "Mengapa kod ini mengembalikan '1'?"
var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a);
Fungsi Pengangkat: Membongkar Rahsia
Fungsi pengangkat ialah mekanisme ingin tahu yang melancarkan pengisytiharan fungsi ke bahagian atas skop mereka. Dalam contoh kita, fungsi b dinaikkan ke skop global, mengubahnya menjadi:
function b() { function a() {} a = 10; return; }
Skop Pembolehubah: Terhad kepada Skop
Sekarang, mari kita keluarkan cahaya pada skop berubah-ubah. Dalam kod kami, a diisytiharkan dengan var dalam skop global dan kemudian ditakrifkan semula dalam b. Apabila pembolehubah diisytiharkan di dalam fungsi, ia hanya boleh diakses dalam skop fungsi itu.
Dalam kes kami, pembolehubah a yang ditakrifkan semula di dalam b adalah setempat kepada fungsi tersebut. Oleh itu, global a asal kekal tidak terjejas.
Tingkah Laku Yang Salah Faham: Menyelam Lebih Dalam
Pada pandangan pertama, fungsi pengisytiharan a() {} mungkin kelihatan seperti pengisytiharan fungsi. Walau bagaimanapun, ia sebenarnya bersamaan dengan var a = function() {};, mentakrifkan objek seperti fungsi. Ini bermakna fungsi a() {} tidak mencipta fungsi bernama a sebaliknya menetapkan semula pembolehubah sedia ada dengan fungsi baharu.
Menyatukan Pengangkatan dan Skop
Menggabungkan fungsi angkat dan skop berubah, kod kami pada asasnya melakukan perkara berikut:
Oleh itu, amaran memaparkan "1" kerana a yang digunakan dalam b ialah pembolehubah tempatan yang tidak menjejaskan global a.
Atas ialah kandungan terperinci Mengapa Kod JavaScript Ini Mengembalikan '1'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!