Môi trường từ vựng của hàm trong JavaScript

Tất cả các biến bên ngoài, có thể truy cập được bởi hàm, được gọi là môi trường từ vựng của nó (LexicalEnvironment).

Trong ví dụ sau, hàm có thể truy cập hai biến: num1 và num2, chúng chính là môi trường từ vựng của hàm chúng ta:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // hàm biết về các biến num1 và num2
}

Bản thân môi trường từ vựng đại diện cho một đối tượng nội bộ nào đó của JavaScript, được gắn với hàm của chúng ta. Trong trường hợp này, nó có thể được biểu diễn dưới dạng sau:

javascript{num1: 1, num2: 2}

Giá trị của bất kỳ biến nào trong môi trường từ vựng luôn bằng giá trị hiện tại của biến đó:

javascriptlet num1 = 1; // môi trường {num1: 1}
let num2 = 2; // môi trường {num1: 1, num2: 2}

// Hãy thay đổi biến num1:
num1 = 123; // môi trường {num1: 123, num2: 2}

function func() {
  
}

Khi chúng ta cố gắng truy cập vào bất kỳ biến nào bên trong hàm, biến đó đầu tiên được tìm kiếm trong số các biến cục bộ của hàm và nếu không có biến đó ở đó, thì nó được tìm kiếm trong môi trường từ vựng của hàm.