Penjelasan fungsi tanpa nama dalam pertukaran Javascript_Experience

WBOY
Lepaskan: 2016-05-16 12:05:48
asal
1391 orang telah melayarinya
1. Apakah fungsi tanpa nama?
Secara amnya terdapat tiga cara untuk mentakrifkan fungsi dalam Javascript:

Pernyataan kata kunci (fungsi) fungsi:
Salin kod Kod adalah seperti berikut:

fungsi fnMethodName(x){alert(x);}

Fungsi Huruf:
Salin kod Kod adalah seperti berikut:

var fnMethodName = function(x){alert(x); }

Fungsi() pembina:
Salin kod Kod adalah seperti berikut:

var fnMethodName = new Function('x','alert(x);')

Tiga kaedah di atas mentakrifkan fungsi kaedah yang sama fnMethodName, yang pertama adalah yang paling Kaedah yang biasa digunakan, dua yang terakhir menyalin fungsi ke fnMethodName pembolehubah, dan fungsi ini tidak mempunyai nama, iaitu, fungsi tanpa nama. Malah, beberapa bahasa mempunyai fungsi tanpa nama.

2. Perbezaan antara fungsi literal dan Function() constructor
Walaupun fungsi literal ialah fungsi tanpa nama, sintaks membolehkan anda menentukan sebarang nama fungsi untuknya Fungsi rekursif boleh memanggil dirinya sendiri, tetapi menggunakan pembina Function() tidak boleh.
Salin kod Kod adalah seperti berikut:

var f = function fact(x) {
jika (x < = 1) mengembalikan 1;
selain mengembalikan x*fact(x-1); penciptaan dan penyusunan dinamik. Dengan cara ini ia serupa dengan fungsi global eval().
Pembina Function() menghuraikan badan fungsi dan mencipta objek fungsi baharu setiap kali ia dilaksanakan. Oleh itu, kecekapan memanggil pembina Function() dalam gelung atau fungsi yang kerap dilaksanakan adalah sangat rendah. Sebaliknya, literal fungsi tidak disusun semula setiap kali ia ditemui.
Apabila anda mencipta fungsi menggunakan pembina Function(), ia tidak mengikut skop biasa Ia sentiasa melaksanakannya sebagai fungsi peringkat atas.




Salin kod
Kod adalah seperti berikut: var y = "global"; >function constructFunction () { var y = "local";
return new Function("return y"); // Tidak dapat memperoleh pembolehubah setempat
}
alert(constructFunction()() ); // Output "global"


Berbanding dengan definisi kata kunci fungsi, pembina Function() mempunyai ciri tersendiri dan lebih sukar untuk digunakan, jadi teknik ini biasanya jarang digunakan. Ungkapan literal fungsi sangat hampir dengan definisi kata kunci fungsi. Memandangkan perbezaan sebelumnya, walaupun terdapat berita bahawa fungsi tanpa nama literal mempunyai pepijat dalam sesetengah enjin webkit di bawah OS X 10.4.3, fungsi tanpa nama yang biasanya kita rujuk kepada fungsi tanpa nama dalam bentuk literal fungsi. Untuk butiran lanjut, anda boleh membaca bab Fungsi "JavaScript: Panduan Definitif, Edisi Ke-5".


3. Corak kod fungsi tanpa nama

Semalam hedger wang memperkenalkan beberapa corak kod fungsi tanpa nama pada blognya:

Mod ralat: Ia tidak boleh berfungsi, penyemak imbas akan melaporkan ralat sintaks.


Salin kod
Kod adalah seperti berikut: function(){ alert( 1); }();

Fungsi literal: mula-mula mengisytiharkan objek fungsi, dan kemudian melaksanakannya.



Salin kod
Kod adalah seperti berikut: (function(){ alert (1) ; } ) ( );

Ungkapan keutamaan: Memandangkan Javascript melaksanakan ungkapan dari dalam kurungan ke luar, anda boleh menggunakan kurungan untuk memaksa pelaksanaan fungsi yang diisytiharkan .



Salin kod
Kod adalah seperti berikut: ( function(){ alert (2) ; } ( ) );

Pengendali void: Gunakan operator kosong untuk melaksanakan satu operan yang tidak dikelilingi oleh kurungan.



Salin kod
Kod adalah seperti berikut:

fungsi void(){
alert(3);
}()

Ketiga-tiga kaedah ini adalah setara, hedger wang lebih suka yang ketiga atas sebab peribadi Di sana adalah 3 jenis, tetapi dalam aplikasi sebenar, apa yang saya lihat dan gunakan adalah jenis pertama.
4. Aplikasi fungsi tanpa nama

Ayat pertama dalam "
Mod Modul Javascript" ialah "Pembolehubah global ialah syaitan". Digabungkan dengan kata kunci var, fungsi tanpa nama boleh memastikan Javascript ditulis pada halaman dengan berkesan tanpa menyebabkan pencemaran kepada pembolehubah global. Ini sangat berkesan dan elegan apabila menambahkan Javascript ke halaman yang tidak dikenali. Malah, fungsi tanpa nama digunakan secara meluas dalam YUI dan paradigma yang sepadan, dan juga digunakan secara meluas dalam perpustakaan Javascript lain.
Javascript ialah asas pengaturcaraan berfungsi. Untuk butiran, sila lihat "Menulis JavaScript Cantik dengan Teknik Pengaturcaraan Fungsian" dan "Panduan Pengaturcaraan JavaScript Fungsian". ,
Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan