All external variables available to the function are called its Lexical Environment
In the following function example, two
variables are available: num1
and
num2
, which are the lexical
environment of our function:
let num1 = 1;
let num2 = 2;
function func() {
// the function knows about the variables num1 and num2
}
The lexical environment itself is some kind of internal JavaScript object attached to our function. In this case, it can be represented as follows:
{num1: 1, num2: 2}
The value of any lexical environment variable is always equal to the current value of that variable:
let num1 = 1; // environment {num1: 1}
let num2 = 2; // environment {num1: 1, num2: 2}
// Let's change the variable num1:
num1 = 123; // environment {num1: 123, num2: 2}
function func() {
}
When we try to refer to some variable inside a function, this variable is first looked up among the local variables of the function and, if such a variable is not there, then it is looked up in the lexical environment of the function.