Fungsi anonim dapat secara efektif memastikan bahwa JavaScript ditulis pada halaman tanpa menyebabkan variabel global terkontaminasi.
Ini bekerja dengan sangat baik dan indah saat menambahkan JavaScript ke halaman yang tidak terlalu akrab.
1. Apa itu fungsi anonim?
Umumnya ada tiga cara untuk mendefinisikan fungsi dalam JavaScript:
Pernyataan Kata Kunci Fungsi:
Fungsi fnmethodname (x) {waspada (x);}
Fungsi literal:
var fnmethodname = function (x) {alert (x);}
Function () constructor:
var fnmethodname = fungsi baru ('x', 'alert (x);')
Tiga metode di atas mendefinisikan fungsi metode yang sama fnmethodname.
Yang pertama adalah metode yang paling umum digunakan. Dua yang terakhir adalah untuk menyalin fungsi ke variabel fnmethodname, dan fungsi ini tidak memiliki nama, yaitu fungsi anonim.
Bahkan, cukup banyak bahasa memiliki fungsi anonim.
2. Perbedaan antara fungsi literal dan fungsi () konstruktor
Meskipun fungsi literal adalah fungsi anonim, sintaksis memungkinkannya ditentukan dengan nama fungsi apa pun. Ini dapat dipanggil sendiri saat menulis fungsi rekursif, tetapi tidak dapat dilakukan dengan menggunakan fungsi () konstruktor.
var f = fungsi fact (x) {if (x <= 1) return 1; lain mengembalikan x*fact (x-1); };
Konstruktor fungsi () memungkinkan pembuatan dinamis dan kompilasi kode JavaScript saat runtime. Dengan cara ini mirip dengan fungsi global eval ().
Fungsi () konstruktor mem -parsing tubuh fungsi setiap kali dieksekusi dan membuat objek fungsi baru. Oleh karena itu, efisiensi memanggil konstruktor fungsi () dalam loop atau fungsi yang sering dieksekusi sangat rendah. Sebaliknya, fungsi literal tidak dikompilasi ulang setiap kali mereka bertemu.
Saat membuat fungsi dengan konstruktor fungsi (), itu tidak mengikuti ruang lingkup khas, itu selalu mengeksekusinya sebagai fungsi tingkat atas.
var y = "global";
fungsi constructFunction () {var y = "local"; mengembalikan fungsi baru ("return y"); // tidak bisa mendapatkan variabel lokal} peringatan (constructFunction () ()); // output "global" dan definisi kata kunci fungsi memiliki karakteristik sendiri dan jauh lebih sulit digunakan daripada konstruktor fungsi ().
Jadi teknologi ini biasanya jarang digunakan.
Fungsi ekspresi literal dan definisi kata kunci fungsi sangat mirip.
Mempertimbangkan perbedaan sebelumnya, meskipun ada pesan yang mengatakan bahwa fungsi anonim literal memiliki bug di bawah mesin webkit tertentu di bawah OS X 10.4.3,
Tapi apa yang biasanya kita sebut fungsi anonim merujuk pada fungsi anonim yang menggunakan bentuk fungsi literal.
3. Mode Kode Fungsi Anonim
Mode Kesalahan: Ini tidak dapat bekerja, browser akan melaporkan kesalahan sintaksis.
function () {alert (1); } ();
Fungsi literal: Pertama -tama nyatakan objek fungsi, lalu jalankan.
(function () {alert (1);}) ();
Ekspresi preferensial:
(function () {alert (2);} ());
Void Operator:
void function () {waspada (3); } () sama. Hedger Wang lebih suka jenis ketiga karena alasan pribadi, sementara dalam aplikasi yang sebenarnya, saya melihat dan menggunakan tipe pertama.
4. Aplikasi fungsi anonim
Kalimat pertama dalam "Pola Modul JavaScript" adalah "Variabel Global adalah iblis."
Dengan kata kunci VAR, fungsi anonim dapat secara efektif memastikan bahwa JavaScript ditulis pada halaman tanpa menyebabkan polusi ke variabel global.
Ini bekerja dengan sangat baik dan indah saat menambahkan JavaScript ke halaman yang tidak terlalu akrab.
Faktanya, Yui dan contoh -contoh yang sesuai menggunakan banyak fungsi anonim, dan perpustakaan JavaScript lainnya juga menggunakan banyak dari mereka.
Landasan pemrograman fungsional dalam JavaScript.
Untuk detailnya, silakan lihat "Menulis JavaScript yang indah dengan teknologi pemrograman fungsional" dan "Panduan untuk Pemrograman JavaScript fungsional".
Penjelasan terperinci di atas tentang penggunaan dan kelebihan serta kerugian dari fungsi anonim dalam JavaScript adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.