JS Closures Scope Lexical
Ringkasan
Closure adalah fungsi yang "mengingat" variabel dari scope tempat ia didefinisikan, meski dieksekusi di luar.
Konsep Dasar
- Scope ditentukan saat waktu definisi (lexical), bukan saat dipanggil.
- Inner function menangkap variabel outer function.
- Sering dipakai untuk privacy (module pattern) dan curry.
Cara Kerja / Struktur
function makeCounter(){
let count = 0;
return function(){ return ++count; };
}
const c = makeCounter();
c(); // 1
c(); // 2 (count tetap hidup di closure)Contoh Kode
function greet(name){
return function(msg){ return `${name}: ${msg}`; };
}
const hi = greet("Budi");
hi("halo"); // "Budi: halo"Catatan Implementasi
- Loop +
varsering bikin bug closure (pakailet/constper-iterasi). - Closure tahan memorinya — jangan simpan objek besar kalau tak perlu.
Kesalahan Umum
- Mengira closure menangkap nilai (menangkap reference variabel).
- Kebocoran memori karena closure reference DOM besar.
Glosarium
- Lexical scope: scope ditentukan dari posisi kode.
- Closure: fungsi + lingkungan scope-nya.