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:
let 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:
{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 đó:
let 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.