Terdapat banyak cara untuk mentakrifkan fungsi dalam Javascript, dan literal fungsi adalah salah satu daripadanya. Contohnya, var fun = function(){}, jika fungsi tidak diberikan kepada fun, maka ia adalah fungsi tanpa nama. Okey, mari kita lihat bagaimana fungsi tanpa nama dipanggil.
Kaedah 1, panggil fungsi dan dapatkan nilai pulangan. Pengendali paksaan menyebabkan panggilan fungsi untuk melaksanakan
(function(x,y){ alert(x+y); return x+y; }(3,4));
Kaedah 2, panggil fungsi dan dapatkan nilai pulangan. Paksa fungsi untuk dilaksanakan secara langsung dan kemudian kembalikan rujukan, dan kemudian rujukan dipanggil dan dilaksanakan
(function(x,y){ alert(x+y); return x+y; })(3,4);
Kaedah ini juga merupakan kaedah panggilan kegemaran yang digunakan oleh banyak perpustakaan, seperti jQuery dan Mootools.
Kaedah 3, gunakan void
void function(x) { x = x-1; alert(x); }(9);
Kaedah 4, gunakan -/ operator
-function(x,y){ alert(x+y); return x+y; }(3,4); +function(x,y){ alert(x+y); return x+y; }(3,4); --function(x,y){ alert(x+y); return x+y; }(3,4); ++function(x,y){ alert(x+y); return x+y; }(3,4);
Kaedah 5, gunakan tilde (~)
~function(x, y) { alert(x+y); return x+y; }(3, 4);
Kaedah 6, pelaksanaan fungsi tanpa nama diletakkan dalam kurungan segi empat sama
[function(){ console.log(this) // 浏览器得控制台输出window }(this)]
Kaedah 7, tambah jenis
sebelum fungsi tanpa namatypeof function(){ console.log(this) // 浏览器得控制台输出window }(this)
Kaedah 8, tambah padam
sebelum fungsi tanpa namadelete function(){ console.log(this) // 浏览器得控制台输出window }(this)
Kaedah 9, tambah kekosongan
sebelum fungsi tanpa namavoid function(){ console.log(this) // 浏览器得控制台输出window }(this)
Kaedah 10, gunakan kaedah baharu untuk lulus parameter
new function(win){ console.log(win) // window }(this)
Kaedah 11, gunakan baharu, jangan lulus parameter
new function(){ console.log(this) // 这里的this就不是window了 }
Kaedah 12, pengendali koma
function(){ console.log(this) // window }();
Mod 13, pengendali XOR bitwise
^function(){ console.log(this) // window }();
Kaedah 14, pengendali perbandingan
function(){ console.log(this) // window }();
Akhirnya lihat kaedah panggilan yang salah
function(x,y){ alert(x+y); return x+y; }(3,4);
N cara menulis fungsi tanpa nama adalah seperti berikut
Fungsi tanpa nama tidak mempunyai nama sebenar dan tiada petunjuk Bagaimana untuk melaksanakannya?
Mengenai cara menulis fungsi tanpa nama, ia sangat berbeza~
menukar pengisytiharan fungsi kepada ungkapan fungsi. Ringkaskannya
Penggunaan paling biasa:
Kod adalah seperti berikut:
(function() { alert('water'); })();
Sudah tentu, anda juga boleh mengambil parameter:
Kod adalah seperti berikut:
(function(o) { alert(o); })('water');
Mahu menggunakan panggilan berantai bagi fungsi tanpa nama? Sangat mudah:
Kod adalah seperti berikut:
(function(o) { console.log(o); return arguments.callee; })('water')('down');
Kita semua tahu fungsi tanpa nama biasa, mari kita lihat fungsi yang tidak biasa:
Kod adalah seperti berikut:
~(function(){ alert('water'); })();//写法有点酷~
Kod adalah seperti berikut:
void function(){ alert('water'); }();//据说效率最高~
Kod adalah seperti berikut:
+function(){ alert('water'); }();
Kod adalah seperti berikut:
-function(){ alert('water'); }();
Kod adalah seperti berikut:
~function(){ alert('water'); }();
Kod adalah seperti berikut:
!function(){ alert('water'); }();
Kod adalah seperti berikut:
(function(){ alert('water'); }());//有点强制执行的味道~
Di atas telah berkongsi dengan anda cara memanggil dan menulis fungsi tanpa nama dalam Javascript. Saya harap ia akan membantu anda.