Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang kaedah panggilan dan penulisan fungsi tanpa nama dalam Javascript (pelbagai jenis)_kemahiran javascript

Penjelasan terperinci tentang kaedah panggilan dan penulisan fungsi tanpa nama dalam Javascript (pelbagai jenis)_kemahiran javascript

WBOY
WBOYasal
2016-05-16 15:17:571141semak imbas

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 nama
typeof function(){
console.log(this) // 浏览器得控制台输出window
}(this) 

Kaedah 8, tambah padam

sebelum fungsi tanpa nama
delete function(){
console.log(this) // 浏览器得控制台输出window
}(this) 

Kaedah 9, tambah kekosongan

sebelum fungsi tanpa nama
void 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~

Tanda

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.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn