Fungsi JavaScript tidak perlu menulis nama fungsi; fungsi tanpa nama dipanggil "fungsi tanpa nama", yang hanya mengandungi kata kunci fungsi, parameter dan badan fungsi, dan sintaksnya ialah "fungsi ([ args]){statements}" . Fungsi fungsi tanpa nama: 1. Penutupan boleh direalisasikan melalui fungsi tanpa nama 2. Mensimulasikan skop peringkat blok dan mengurangkan pembolehubah global.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.
Fungsi Javascript tidak perlu menulis nama fungsi Fungsi tanpa nama dipanggil "fungsi tanpa nama".
Fungsi tanpa nama: Fungsi tanpa nama sebenar.
Fungsi tanpa nama hanya mengandungi kata kunci fungsi, parameter dan badan fungsi. Penggunaan khusus adalah seperti berikut:
function ([args]) { statements }
Mula-mula kami mengisytiharkan fungsi normal:
//声明一个普通函数,函数的名字叫fn function fn(){ console.log("web-chubby"); }
Kemudian alih keluar nama fungsi untuk menjadi fungsi tanpa nama:
//匿名函数,咦,运行时,你会发现报错啦! function (){ console.log("web-chubby"); }
kepada Oleh itu, anda akan mendapati bahawa apabila anda menjalankan fungsi tanpa nama sahaja, ralat dilaporkan kerana ia tidak memenuhi keperluan sintaks!
Penyelesaian: Hanya bungkus kurungan di sekeliling fungsi tanpa nama untuk menjadikannya ungkapan:
//匿名函数在其它应用场景括号可以省略 (function (){ //由于没有执行该匿名函数,所以不会执行匿名函数体内的语句。 console.log("web-chubby"); })
Bagaimana untuk melaksanakan dan menggunakan fungsi tanpa nama?
1. Jalankan fungsi tanpa nama
Jika anda perlu melaksanakan fungsi tanpa nama, tambahkan kurungan selepas fungsi tanpa nama, iaitu, laksanakan fungsi dengan segera
Tanda kurung hanya membalut fungsi tanpa nama diikuti dengan kurungan pelaksanaan (biasa digunakan)
(function () { alert('匿名函数执行方式一') })();
kurungan Balut fungsi tanpa nama dan kurungan yang melaksanakan fungsi tanpa nama untuk membentuk ungkapan
2. Bagaimana untuk menghantar parameter kepada fungsi tanpa nama
dan parameter biasa lain Begitu juga, tulis sahaja parameter terus dalam kurungan:
(function (m) { alert(m) }('这是匿名函数传进来的参数'));
Aplikasi fungsi tanpa nama
Ikat kaedah masa Peristiwa
<input type="button" value="点我啊!" id="sub"> <script> //获得按钮元素 var sub=document.querySelector("#sub"); //给按钮增加点击事件。 sub.onclick=function(){ alert("当点击按钮时会执行到我哦!"); } </script>
Ungkapan fungsi memberikan fungsi tanpa nama kepada pembolehubah
//将匿名函数赋值给变量fn。 var fn=function(){ return "我是一只小小小小留下,怎么飞也飞不高!" } //调用方式与调用普通函数一样 console.log(fn());//我是一只小小小小留下,怎么飞也飞不高!
Fungsi atribut dalam objek
var obj={ name:"web-chubby", age:18, fn:function(){ return "我叫"+this.name+"今年"+this.age+"岁了!"; } }; console.log(obj.fn());//我叫web-chubby今年18岁了!
Fungsi panggil balik, mengambil fungsi tanpa nama sebagai salah satu parameternya
//过滤出值为9的值 let numArr = [1, 5, 9, 10] let newArr = numArr.filter(function (item) { if (item !== 9) { return item } });
Fungsi mengembalikan nilai, iaitu fungsi digunakan sebagai nilai pulangan
//将匿名函数作为返回值 function fn(){ //返回匿名函数 return function(){ return "web-chubby"; } } //调用匿名函数 console.log(fn()());//web-chubby //或 var box=fn(); console.log(box());//web-chubby
Meniru peringkat blok kesan Domain
skop peringkat blok, kadangkala dipanggil skop peribadi. Tiada skop peringkat blok dalam JavaScript Contohnya:
if(1==1){//条件成立,执行if代码块语句。 var a=12;//a为全局变量 } console.log(a);//12 for(var i=0;i<3;i++){ console.log(i); } console.log(i);//4
if(){}for(){}, dsb. tidak mempunyai skopnya sendiri. Jika ia keluar dari skopnya sendiri, pembolehubah yang diisytiharkan akan dimusnahkan serta-merta. Tetapi kita boleh mensimulasikan skop peringkat blok melalui fungsi tanpa nama:
(function(){ //这里是我们的块级作用域(私有作用域) })();
Cuba skop peringkat blok:
function fn(){ (function(){ var la="啦啦啦!"; })(); console.log(la);//报错---la is not defined } fn();
Peranan fungsi tanpa nama:
1. Penutupan boleh dilaksanakan melalui fungsi tanpa nama. Pengenalan pantas di sini: penutupan ialah fungsi yang boleh mengakses pembolehubah yang ditakrifkan dalam skop fungsi. Untuk membuat penutupan, anda selalunya perlu menggunakan fungsi tanpa nama.
2. Simulasikan skop peringkat blok dan kurangkan pembolehubah global. Selepas melaksanakan fungsi tanpa nama, pembolehubah sepadan yang disimpan dalam memori akan dimusnahkan, sekali gus menjimatkan memori. Tambahan pula, dalam projek pembangunan berbilang orang berskala besar, menggunakan skop peringkat blok akan mengurangkan masalah konflik penamaan, dengan itu mengelakkan akibat bencana. Pembangun tidak perlu lagi bimbang tentang mengacaukan skop global.
[Cadangan berkaitan: tutorial pembelajaran javascript]
Atas ialah kandungan terperinci Bolehkah JavaScript tidak menulis nama fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!