Akses ke Variabel Eksternal Fungsi dalam JavaScript

Mari kita perhatikan kode berikut:

javascriptlet num = 1; // mengatur nilai variabel

function func() {
  console.log(num); // menampilkannya di konsol
}

func(); // memanggil fungsi

Seperti yang telah saya sebutkan sebelumnya, nilai variabel tidak harus berada sebelum definisi fungsi, yang penting adalah nilainya berada sebelum pemanggilannya:

javascriptfunction func() {
  console.log(num);
}

let num = 1;
func();

Sebenarnya, ini tidak sepenuhnya benar. Fungsi kita bahkan sebelum dipanggil sudah mengetahui nilai variabel num:

javascriptlet num = 1;

function func() {
  console.log(num); // fungsi sudah tahu bahwa num = 1
}

Berikut contoh yang lebih kompleks:

javascriptlet num = 1; // pada saat ini fungsi mengetahui bahwa num = 1

function func() {
  console.log(num);
}

num = 2; // pada saat ini fungsi mengetahui bahwa num = 2

Mari tambahkan pemanggilan fungsi:

javascriptlet num = 1; // pada saat ini fungsi mengetahui bahwa num = 1
func(); // akan menampilkan 1

function func() {
  console.log(num);
}

func(); // akan menampilkan 1
num = 2; // pada saat ini fungsi mengetahui bahwa num = 2
func(); // akan menampilkan 2

Sekali lagi: sebenarnya fungsi mengetahui nilai-nilai variabel eksternal, bahkan tanpa dipanggil sekalipun.