Ada dua cara untuk mendeklarasikan fungsi dalam JavaScript: Fungsi Ekspresi Deklaratif dan Fungsi.
Perbedaannya adalah sebagai berikut:
1). Untuk fungsi yang ditentukan oleh metode yang dinyatakan oleh fungsi, nama fungsi diperlukan, sedangkan nama fungsi ekspresi fungsi adalah opsional.
2). Fungsi yang ditentukan oleh metode yang dinyatakan oleh fungsi dapat dipanggil sebelum deklarasi fungsi, sedangkan fungsi ekspresi fungsi hanya dapat dipanggil setelah deklarasi.
3). Fungsi yang ditentukan oleh metode yang dinyatakan oleh fungsi bukan deklarasi nyata. Mereka hanya dapat muncul secara global atau bersarang di fungsi lain, tetapi mereka tidak dapat muncul dalam loop, kondisi, atau mencoba/menangkap/akhirnya, dan
Ekspresi fungsi dapat dinyatakan di mana saja.
Berikut ini adalah dua metode untuk menentukan fungsi:
Salinan kode adalah sebagai berikut:
// Fungsi formula deklaratif
fungsi salam () {
Console.log ("Hello World");
}
// Ekspresi fungsi
var ucapan = fungsi () {
Console.log ("Hello World");
}
Ini javascript yang menarik:
Salinan kode adalah sebagai berikut:
fungsi f () {console.log ('Saya di luar!'); }
(fungsi () {
if (false) {
// Ulangi fungsinya f
function f () {console.log ('I Am Inside!'); }
}
F();
} ());
Apa yang akan output? Reaksi pertama harus "Saya di luar". Akibatnya, "I Am Inside" adalah output di Chrome, IE11 secara langsung melaporkan kesalahan, dan versi yang lebih rendah dari output firefox "Saya di luar" ...
Hasil output chrome jelas mencerminkan karakteristik fungsi yang dinyatakan dengan fungsi ekspresi deklaratif - fungsi dapat dipanggil sebelum deklarasi.
IE Kesalahan menunjukkan bahwa objek tidak ada karena deklarasi fungsi dalam kondisi, yang melanggar prinsip deklarasi fungsi.
Lingkup Ekspresi Fungsi:
Jika fungsi yang dinyatakan oleh ekspresi fungsi memiliki nama fungsi, maka nama fungsi setara dengan variabel lokal dari fungsi dan hanya dapat dipanggil di dalam fungsi. Misalnya, kastanye:
Salinan kode adalah sebagai berikut:
var f = fungsi fact (x) {
if (x <= 1)
kembali 1;
kalau tidak
return x*fact (x-1);
};
peringatan (fact ()); // ReferenceError Uncaught: Fakta tidak didefinisikan
fact () dapat dipanggil di dalam fungsi, tetapi kesalahan akan dilaporkan ketika dipanggil di luar fungsi: fakta tidak didefinisikan
Di atas adalah semua tentang artikel ini, saya harap Anda menyukainya.