Pengkapsulan ECMAScript
- Halaman sebelumnya Objek Function
- Halaman berikutnya Berfokus kepada objek
Paling menggoda di ECMAScript adalah ia menyokong pengkapsulan (closure).
Klosur, merujuk kepada ekspresi leksikal yang termasuk variabel yang tidak dihitung dalam fungsi, iaitu, fungsi boleh menggunakan variabel yang didефинисikan di luar fungsi.
Contoh klosur sederhana
Penggunaan variabel global di ECMAScript adalah contoh klosur yang sederhana. Pikirkan kod berikut:
var sMessage = "hello world"; fungsi sayHelloWorld() { alert(sMessage); } sayHelloWorld();
Dalam kod ini, skrip diunggah ke ingatan setelah dijalankan, tidak mengira nilai variabel sMessage untuk fungsi sayHelloWorld(). Fungsi ini hanya menangkap nilai sMessage untuk penggunaan nanti, iaitu, program penggubal mengetahui untuk memeriksa nilai sMessage ketika dipanggil fungsi. sMessage akan diisi semasa pemanggilan fungsi sayHelloWorld() (baris terakhir) untuk menampilkan mesej "hello world".
Contoh klosur kompleks
Mendefinikan satu fungsi di dalam fungsi lain akan membuat klosur menjadi lebih kompleks. Contohnya:
var iBaseNum = 10; fungsi addNum(iNum1, iNum2) { fungsi doAdd() { kembali iNum1 + iNum2 + iBaseNum; } kembali doAdd(); }
Di sini, fungsi addNum() termasuk fungsi doAdd() (klosur). Fungsi dalaman adalah klosur kerana ia akan mengambil nilai parameter fungsi luaran iNum1 dan iNum2 serta nilai variabel global iBaseNum. Langkah terakhir fungsi addNum() adalah memanggil doAdd(), menambahkan dua parameter dan variabel global, dan mengembalikan sumanya.
Konsep penting yang perlu dijaga di sini adalah, fungsi doAdd() sebenarnya tidak menerima parameter, nilai yang digunakan adalah diambil dari lingkungan eksekusi.
Dapat dilihat, klosur adalah sebahagian yang kuat dan biasa di ECMAScript, boleh digunakan untuk melaksanakan kiraan yang kompleks.
Petikan:Sama seperti penggunaan mana-mana fungsi tinggi, gunakan klosur dengan hati-hati kerana mereka boleh menjadi sangat kompleks.
- Halaman sebelumnya Objek Function
- Halaman berikutnya Berfokus kepada objek