Rumah >hujung hadapan web >tutorial js >Mengapa Anda Boleh Menggunakan Fungsi JavaScript Sebelum Ia Ditakrifkan?
Walaupun penampilannya tidak konvensional, JavaScript membenarkan anda menggunakan fungsi sebelum ia ditakrifkan secara eksplisit. Tingkah laku yang kelihatan ajaib ini berpunca daripada sifat istimewa pengisytiharan fungsi.
Dalam JavaScript, pengisytiharan fungsi berkelakuan berbeza daripada tugasan dengan ungkapan fungsi. Apabila fungsi diisytiharkan menggunakan kata kunci fungsi, pengecamnya diikat sebelum sebarang kod dalam blok fungsi dilaksanakan.
Sebagai contoh, pertimbangkan kod berikut:
function fooCheck() { alert(internalFoo()); // Uses internalFoo() before definition return internalFoo(); // Still uses it function internalFoo() { return true; } // Defined later } fooCheck();
Dalam kod ini , fungsi fooCheck boleh mengakses fungsi internalFoo walaupun ia ditakrifkan kemudian dalam blok yang sama. Ini kerana pengisytiharan fungsi itu sendiri menyebabkan pengecam internalFoo diikat dan disediakan.
Sebaliknya, jika anda menukar definisi kepada ungkapan fungsi yang diberikan kepada pembolehubah , kod tidak akan berfungsi lagi:
var internalFoo = function() { return true; };
Ini kerana ungkapan fungsi dinilai dari atas ke bawah dan penyataan tugasan dilaksanakan hanya selepas fooCheck dipanggil.
Pengisytiharan fungsi dan ungkapan fungsi ialah entiti yang berbeza secara sintaksis. Pengisytiharan fungsi ialah pernyataan, manakala ungkapan fungsi ialah ungkapan. Perbezaan ini membawa kepada tingkah laku berbeza yang diperhatikan dalam contoh kod.
Tingkah laku ini digariskan dalam standard ECMAScript (bahagian 10.1.3). Walaupun piawaian itu mungkin bukan bacaan yang paling mudah diakses, ia memberikan penjelasan menyeluruh tentang aspek JavaScript yang rumit ini.
Atas ialah kandungan terperinci Mengapa Anda Boleh Menggunakan Fungsi JavaScript Sebelum Ia Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!