Menu Tutup

Pengertian Closure dalam Pemrograman JavaScript: Fungsi, Jenis, dan Penerapannya

Pengertian Closure

Closure adalah konsep dalam pemrograman komputer, khususnya dalam bahasa pemrograman JavaScript. Secara sederhana, closure adalah fungsi yang memiliki akses ke variabel di dalam lingkup (scope) terluarnya, bahkan setelah fungsi tersebut selesai dieksekusi. Closure memungkinkan fungsi untuk “mengikat” variabel-variabel dari lingkup luar dan tetap mengaksesnya meskipun lingkup tersebut sudah tidak aktif.

Closure memungkinkan adanya enkapsulasi data dan merupakan salah satu fitur penting yang membuat JavaScript sangat fleksibel dan powerful. Closure sering digunakan dalam pembuatan fungsi callback, event handler, dan pembuatan modul dalam JavaScript.

Jenis-Jenis Closure

1. Lexical Closure

Lexical closure adalah closure yang dibuat ketika sebuah fungsi didefinisikan di dalam lingkup lainnya dan memiliki akses ke variabel-variabel dalam lingkup tersebut. Lexical closure memungkinkan fungsi untuk mengakses variabel dari lingkup luar, meskipun fungsi tersebut dipanggil di luar lingkup tersebut.

2. Closure dengan Fungsi Anonim

Closure juga dapat diciptakan dengan menggunakan fungsi anonim. Fungsi anonim adalah fungsi yang tidak memiliki nama dan biasanya digunakan untuk membuat fungsi callback atau event handler.

3. Closure dengan IIFE (Immediately Invoked Function Expression)

Closure dapat dibuat dengan IIFE, yaitu ekspresi fungsi yang langsung dipanggil setelah didefinisikan. IIFE sering digunakan untuk membuat lingkup lokal agar variabel tidak mencemari lingkup global.

4. Closure dengan Modul

Closure juga digunakan dalam pembuatan modul di JavaScript. Modul adalah bagian kode yang terisolasi dan dapat di-reuse. Dengan menggunakan closure, kita dapat menyembunyikan detail implementasi modul dan hanya mengekspos API publik.

Penerapan Closure dalam Pemrograman

1. Menjaga Privasi Variabel

Closure dapat digunakan untuk menjaga privasi variabel dalam sebuah fungsi. Dengan menggunakan closure, variabel-variabel dalam fungsi tidak dapat diakses dari luar fungsi tersebut, sehingga menjaga integritas data.

javascript

function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}

const counter = createCounter();
console.log(counter()); // Output: 1
console.log(counter()); // Output: 2

2. Membuat Fungsi Callback

Closure sering digunakan untuk membuat fungsi callback. Fungsi callback adalah fungsi yang dikirimkan sebagai argumen ke fungsi lain dan dieksekusi setelah fungsi lain selesai dijalankan.

javascript

function greet(name) {
return function() {
console.log('Hello, ' + name);
};
}

const greetJohn = greet('John');
greetJohn(); // Output: Hello, John

3. Membuat Event Handler

Closure juga dapat digunakan untuk membuat event handler. Event handler adalah fungsi yang dijalankan sebagai respons terhadap suatu event, seperti klik tombol atau pengiriman formulir.

javascript

function setupButton() {
let count = 0;
document.getElementById('myButton').addEventListener('click', function() {
count++;
console.log('Button clicked ' + count + ' times');
});
}

setupButton();

4. Pembuatan Modul

Closure sangat berguna dalam pembuatan modul, di mana kita dapat menyembunyikan detail implementasi dan hanya mengekspos fungsi-fungsi publik.

javascript

const myModule = (function() {
let privateVar = 'I am private';
function privateFunction() {
console.log(privateVar);
}
return {
publicFunction: function() {
privateFunction();
}
};
})();

myModule.publicFunction(); // Output: I am private

Kesimpulan

Closure adalah konsep penting dalam pemrograman JavaScript yang memungkinkan fungsi untuk mengakses variabel dari lingkup luar meskipun fungsi tersebut dipanggil di luar lingkup tersebut. Closure dapat digunakan untuk menjaga privasi variabel, membuat fungsi callback, event handler, dan modul. Dengan memahami dan memanfaatkan closure, kita dapat menulis kode JavaScript yang lebih efisien, modular, dan terorganisir.

Memahami konsep closure dan cara penerapannya dapat membantu pengembang dalam menulis kode yang lebih baik dan lebih mudah dipelihara. Dengan memanfaatkan closure, kita dapat membuat aplikasi yang lebih aman, modular, dan fleksibel.

Baca Juga: