Fungsi tanpa nama JavaScript meniru kemahiran scope_javascript peringkat blok

WBOY
Lepaskan: 2016-05-16 15:26:12
asal
1507 orang telah melayarinya

Fungsi tanpa nama

Fungsi ialah objek paling fleksibel dalam JavaScript Di sini kami hanya menerangkan penggunaan fungsi tanpa namanya.

Fungsi tanpa nama: Ia adalah fungsi tanpa nama fungsi.

Takrif fungsi, mula-mula memperkenalkan secara ringkas definisi fungsi, yang boleh dibahagikan secara kasar kepada tiga cara

Jenis pertama: Ini juga yang paling konvensional

function double(x){
  return 2 * x;  
}
Salin selepas log masuk

Kaedah kedua: Kaedah ini menggunakan pembina Fungsi dan menganggap kedua-dua senarai parameter dan badan fungsi sebagai rentetan Ini sangat menyusahkan dan tidak disyorkan.

var double = new Function('x', 'return 2 * x;');
Salin selepas log masuk

Jenis ketiga:

var double = function(x) { return 2* x; }
Salin selepas log masuk

Ambil perhatian bahawa fungsi di sebelah kanan "=" ialah fungsi tanpa nama Selepas mencipta fungsi, fungsi itu diberikan kepada petak pembolehubah.

Tiada konsep skop peringkat blok dalam JavaScript. Dalam erti kata lain, pembolehubah yang ditakrifkan dalam penyataan peringkat blok sebenarnya dicipta dalam fungsi yang mengandungi (fungsi luaran) dan bukannya dalam penyataan.

function outputNumber(count){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  } 
  alert(i);  //count 
} 
Salin selepas log masuk

Untuk fungsi ini dalam bahasa seperti Java dan C#, pembolehubah i hanya akan ditakrifkan dalam pernyataan gelung untuk apabila gelung tamat, i akan dimusnahkan. Tetapi dalam JavaScript, pembolehubah i ditakrifkan dalam objek aktiviti outputNumber(), jadi ia boleh diakses di dalam fungsi sebaik sahaja ia ditakrifkan. Walaupun anda mengisytiharkan semula pembolehubah yang sama, nilainya tidak akan diubah.

function outputNumber(count){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  } 
  var i;   //重新声明变量 
  alert(i);  //count 
} 
Salin selepas log masuk

Fungsi tanpa nama boleh digunakan untuk meniru skop peringkat blok dan mengelakkan masalah ini Sintaks fungsi tanpa nama yang digunakan sebagai skop peringkat blok (juga dipanggil skop peribadi) adalah seperti berikut:

(function(){ 
   //这是块级作用域 
})() 
Salin selepas log masuk

Takrifan kod di atas memanggil fungsi tanpa nama dan menyertakan pengisytiharan fungsi dalam kurungan, menunjukkan bahawa ia adalah ungkapan fungsi. Sepasang kurungan lain yang mengikutinya segera memanggil fungsi tersebut.
Pada bila-bila masa anda memerlukan beberapa pembolehubah buat sementara waktu, anda boleh menggunakan skop peribadi, contohnya:

function outputNumber(count){ 
  (function(){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  })(); 
  alert(i);  //导致一个错误 
} 
Salin selepas log masuk

Dengan cara ini, kami memasukkan skop peribadi di luar gelung untuk. Sebarang pembolehubah yang ditakrifkan dalam fungsi tanpa nama akan dimusnahkan pada akhir pelaksanaan.

Teknik ini sering digunakan fungsi luar dalam skop global untuk mengehadkan penambahan terlalu banyak pembolehubah dan fungsi pada skop global.

Secara umum, kita harus cuba meminimumkan penambahan pembolehubah dan fungsi pada skop global.

Pendekatan ini boleh mengurangkan masalah penutupan yang menduduki memori, kerana tiada rujukan kepada fungsi tanpa nama, dan rantai skopnya boleh dimusnahkan serta-merta selagi fungsi itu dilaksanakan.

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!