Closure di JavaScript
Closure adalah kombinasi antara fungsi dan lingkungan leksikal (lexical environment) di mana fungsi tersebut didefinisikan. Closure memungkinkan fungsi mengakses variabel dari luar cakupannya (scope) meskipun fungsi tersebut dieksekusi di luar scope aslinya.
Mengapa Closure Penting?
Closure memungkinkan: - Data tetap privat (encapsulation). - Pembuatan fungsi dengan konfigurasi khusus (partial application). - Penggunaan fungsi sebagai penghasil fungsi lainnya (function factory).
Contoh Closure
```javascript function pembuatPenghitung() { let hitung = 0; return function () { hitung++; return hitung; }; }
const tambah = pembuatPenghitung();
console.log(tambah()); // 1 console.log(tambah()); // 2 console.log(tambah()); // 3 ````
Pada contoh di atas:
hitungadalah variabel lokal daripembuatPenghitung.- Fungsi anonim yang dikembalikan tetap dapat mengakses
hitungkarena merupakan closure.
Keunggulan Closure
- Privasi: Variabel di dalam closure tidak dapat diakses langsung dari luar.
- Kontrol State: Berguna dalam callback dan asynchronous programming.
- Modularisasi: Closure dapat digunakan untuk membuat module pattern.
Kapan Menggunakan Closure?
- Saat ingin menyimpan state antar pemanggilan fungsi.
- Saat membuat fungsi yang dapat dikustomisasi.
- Saat ingin menjaga data agar tetap private.
📦 Closure adalah salah satu fitur paling kuat dan paling sering digunakan dalam JavaScript modern, terutama dalam pengembangan berbasis event-driven dan functional programming.