Lingkungan Leksikal Fungsi dalam JavaScript

Semua variabel eksternal yang dapat diakses oleh fungsi, disebut lingkungan leksikalnya (LexicalEnvironment).

Dalam contoh berikut, fungsi dapat mengakses dua variabel: num1 dan num2, yang merupakan lingkungan leksikal dari fungsi kita:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // fungsi mengetahui tentang variabel num1 dan num2
}

Lingkungan leksikal itu sendiri merupakan suatu objek internal JavaScript yang terikat pada fungsi kita. Dalam hal ini, dapat digambarkan sebagai berikut:

javascript{num1: 1, num2: 2}

Nilai dari setiap variabel dalam lingkungan leksikal selalu sama dengan nilai terkini dari variabel tersebut:

javascriptlet num1 = 1; // lingkungan {num1: 1}
let num2 = 2; // lingkungan {num1: 1, num2: 2}

// Ubah variabel num1:
num1 = 123; // lingkungan {num1: 123, num2: 2}

function func() {
  
}

Ketika kita mencoba mengakses variabel apa pun di dalam fungsi, variabel tersebut pertama-tama akan dicari di antara variabel lokal fungsi dan jika variabel tersebut tidak ada di sana, maka akan dicari di lingkungan leksikal fungsi.