Fungsi adalah objek paling fleksibel dalam JavaScript. Di sini kami hanya menjelaskan tujuan fungsi anonimnya. Fungsi anonim merujuk pada fungsi yang tidak menentukan nama atau petunjuk fungsi. Fungsi anonim yang dieksekusi sendiri hanyalah salah satunya. Berikut ini disebut fungsi ini: fungsi pengendekaan mandiri.
Berikut adalah salah satu fungsi pengendalian diri yang paling umum:
// fungsi anonim tradisional (function () {alert ('hello');}) ();Efek eksekusi dari kode ini adalah untuk muncul saat halaman dimuat kembali: "halo"
Apa yang diminta untuk dieksekusi secara otomatis? , lihat kode berikut
// Hapus tanda kurung dalam penulisan tradisional dan tambahkan operator ~,!,+,-~ function () {waspada ('hello');} () ;! function () {waspada ('hello');} ();+function () {alert ('hello');} ();-function () {waspada ('hello');} ();Metode penulisan ini tidak berbeda dari metode tradisional yang disebutkan di atas.
Saya menemukan bahwa titik umum dari metode penulisan ini adalah operator. Faktanya, cara tradisional braket () juga termasuk jenis operasi, yang muncul di: a = b*(c+d).
Operator + Parameter yang diteruskan ke fungsi yang dihasilkan sendiri = secara otomatis dieksekusi? Tetapi beberapa simbol juga tidak didukung, seperti tanda "=, *, /". Alasan mengapa itu mengeksekusi dirinya sendiri masih sangat misterius, dan tidak ada jawaban yang layak di internet.
Kemudian saya menemukan fenomena magis di mana operator ini dapat ditumpangkan tanpa batas. . . . . .
// Fungsi didahului oleh simbol tertentu yang dapat ditumpangkan tanpa batas ... ~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~! ~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+ -~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~! +-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-- ~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+ -~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~!+-~! +-~!+-~ ~~~~~~~~~~~~~~ !!+!+-~~~~~~~~~~~~~~ ~!+!+-~~~~~~~~~~~~
Program ini berjalan secara normal !!!!!!
Namun, ada dua situasi di mana kesalahan akan dilaporkan
Jika tiga atau lebih "+" atau "-" simbol muncul secara berurutan, kesalahan akan terjadi;
Jika dua simbol "+" atau "-" muncul secara berurutan dan diikuti oleh simbol lain, kesalahan akan terjadi, seperti "++ ~", "-+";
Prompt kesalahan: ReferenceError yang tidak dibawa: Ekspresi sisi kiri tidak valid dalam operasi awalan (artinya kesalahan ekspresi kiri)
Kemudian saya menggunakan simbol yang sama untuk menghitung variabel dan menemukan bahwa itu persis sama. Ini mungkin sudah dijelaskan bahwa operasi JavaScript meminta eksekusi fungsi fungsi secara otomatis, atau dapat dipahami sebagai memanggil fungsi ini melalui operasi!
Bukannya fungsi mengeksekusi dirinya sendiri, tetapi fungsi ini dipanggil melalui operasi! , tetapi hanya beberapa metode perhitungan yang didukung!
Selain itu, fungsi yang dieksekusi sendiri ini mungkin bukan fungsi anonim! Melihat kode di atas, saya mendefinisikan nama fungsi A dalam fungsi setelah operator, dan tidak ada yang terkecuali, tetapi itu tidak berguna - -!, Ini masih tidak dapat dipanggil dengan metode lain, tetapi saya pikir itu agak tidak pantas bagi banyak orang untuk menyebutnya fungsi anonim!
Di atas adalah analisis singkat tentang prinsip fungsi anonim yang dieksekusi sendiri (function () {{}) () yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu semua orang!