Ungkapan dan Pengisytiharan Fungsi: Membezakan Konstruk JavaScript
Apabila bekerja dengan JavaScript, pembangun sering menemui dua binaan: ungkapan fungsi dan pengisytiharan. Walaupun kefungsian serupa, ia berbeza dalam pengendaliannya mengikut penyemak imbas dan gelagat pemuatannya dalam konteks pelaksanaan.
Ekspresi Fungsi
Ekspresi fungsi, juga dikenali sebagai fungsi tanpa nama , adalah fungsi tanpa nama yang diberikan kepada pembolehubah. Ia ditakrifkan menggunakan sintaks berikut:
var foo = function() { return 5; }
Fungsi Diisytiharkan
Pengisytiharan fungsi, sebaliknya, dinamakan fungsi yang diisytiharkan secara eksplisit menggunakan kata kunci fungsi . Sintaksnya ialah:
function foo() { return 5; }
Gelagat Pemuatan
Perbezaan utama antara binaan ini terletak pada gelagat pemuatannya. Pengisytiharan fungsi dinaikkan ke bahagian atas konteks pelaksanaan dan tersedia sebelum sebarang kod dilaksanakan. Ini membolehkan mereka dipanggil sebelum diisytiharkan dan mereka boleh diakses di mana-mana dalam skop semasa, walaupun sebelum pengisytiharan mereka.
Ekspresi fungsi, walau bagaimanapun, dimuatkan hanya apabila penterjemah mencapai baris kod tersebut. Ini bermakna jika anda cuba memanggil ungkapan fungsi sebelum ia diisytiharkan, anda akan menghadapi ralat. Ungkapan fungsi hanya boleh diakses dalam skop di mana ia diisytiharkan.
Contoh
Pertimbangkan contoh berikut:
alert(foo()); // This will cause an error var foo = function() { return 5; }
Dalam contoh ini , ungkapan fungsi foo tidak tersedia sebelum pengisytiharannya, oleh itu ralat semasa cuba memanggil ia.
Ungkapan Fungsi Dinamakan
Walaupun jarang, adalah mungkin untuk menamakan ungkapan fungsi menggunakan sintaks berikut:
var foo = function foo() { return 5; }
Sementara sintaks ini dari segi sejarah terdedah kepada ralat dalam Safari, ia kini berfungsi seperti yang diharapkan dalam moden pelayar.
Kesimpulan
Ekspresi fungsi dan pengisytiharan fungsi menawarkan cara berbeza untuk mentakrifkan fungsi dalam JavaScript. Walaupun pengisytiharan fungsi tersedia serta-merta di seluruh skop, ungkapan fungsi dimuatkan hanya apabila diperlukan, membenarkan akses yang lebih terkawal dalam pangkalan kod. Memahami perbezaan mereka adalah penting untuk memastikan pelaksanaan kod yang betul dan mengelakkan kemungkinan ralat masa jalan.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Perisytiharan dan Ungkapan Fungsi JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!