Akses kepada Pembolehubah Luaran Fungsi dalam JavaScript

Mari kita lihat kod berikut:

javascriptlet num = 1; // tetapkan nilai pembolehubah

function func() {
  console.log(num); // outputkan nilainya ke konsol
}

func(); // panggil fungsi

Seperti yang saya sebutkan sebelum ini, nilai pembolehubah tidak semestinya perlu berada sebelum takrifan fungsi, yang penting, ia perlu berada sebelum panggilannya:

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

let num = 1;
func();

Sebenarnya, ini tidak tepat begitu. Fungsi kita walaupun sebelum dipanggil sudah mengetahui nilai pembolehubah num:

javascriptlet num = 1;

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

Berikut adalah contoh yang lebih kompleks:

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

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

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

Mari tambah panggilan fungsi:

javascriptlet num = 1; // pada saat ini fungsi mengetahui bahawa num = 1
func(); // akan output 1

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

func(); // akan output 1
num = 2; // pada saat ini fungsi mengetahui bahawa num = 2
func(); // akan output 2

Sekali lagi: sebenarnya fungsi mengetahui nilai pembolehubah luaran, walaupun tidak dipanggil.