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:

javascriptfunction 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.