Penutupan dalam JavaScript
Mari kita kaji konsep penutupan (closure). Sebenarnya anda sudah biasa dengan konsep ini, yang tinggal hanyalah mempelajari terminologi yang betul.
Jadi, penutupan ialah fungsi bersama-sama dengan semua pembolehubah luaran yang boleh diaksesnya. Atau, dalam erti kata lain, penutupan ialah fungsi bersama-sama dengan persekitaran leksikalnya.
Dalam JavaScript selalunya, apabila menyebut "penutupan fungsi", yang dimaksudkan bukanlah fungsi itu sendiri, tetapi tepatnya pembolehubah luarnya. Jika sesuatu fungsi menerima pembolehubah dari persekitaran leksikalnya, maka dikatakan "pembolehubah diambil dari penutupan".
Mari kita ingat semula kod yang kita buat dalam pelajaran sebelumnya:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // akan memaparkan 1
Dalam kes ini, kita boleh mengatakan bahawa fungsi
func menerima nilai pembolehubah
num dari penutupan. Juga boleh dikatakan,
bahawa fungsi func menyimpan nilai pembolehubah
num dalam penutupan.