Penutupan dalam JavaScript
Sekarang mari kita pelajari konsep penutupan (closure). Sebenarnya Anda sudah familiar dengan konsep ini, tinggal mengetahui terminologi yang tepat.
Jadi, penutupan adalah fungsi bersama dengan semua variabel eksternal yang dapat diaksesnya. Atau, dengan kata lain, penutupan adalah fungsi bersama dengan lingkungan leksikalnya.
Dalam JavaScript, seringkali ketika mengatakan "penutupan fungsi", yang dimaksud bukanlah fungsi itu sendiri, tapi justru variabel eksternalnya. Jika suatu fungsi mendapatkan variabel dari lingkungan leksikalnya, maka dikatakan "variabel diambil dari penutupan".
Mari kita ingat kembali kode yang kita buat di pelajaran sebelumnya:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // menampilkan 1
Dalam kasus ini, dapat dikatakan bahwa fungsi
func mendapatkan nilai variabel
num dari penutupan. Juga dapat dikatakan,
bahwa fungsi func menyimpan nilai variabel
num dalam penutupan.