Ambiente Léxico de Funções em JavaScript
Todas as variáveis externas e acessíveis a uma função são chamadas de seu ambiente léxico (LexicalEnvironment).
No exemplo a seguir, a função tem acesso a duas
variáveis: num1 e num2, que
formam o ambiente léxico da nossa função:
let num1 = 1;
let num2 = 2;
function func() {
// a função conhece as variáveis num1 e num2
}
O próprio ambiente léxico representa um objeto interno do JavaScript, vinculado à nossa função. Neste caso, pode ser representado da seguinte forma:
{num1: 1, num2: 2}
O valor de qualquer variável do ambiente léxico sempre é igual ao valor atual dessa variável:
let num1 = 1; // ambiente {num1: 1}
let num2 = 2; // ambiente {num1: 1, num2: 2}
// Vamos alterar a variável num1:
num1 = 123; // ambiente {num1: 123, num2: 2}
function func() {
}
Quando tentamos acessar qualquer variável dentro de uma função, essa variável é primeiro buscada entre as variáveis locais da função e, se não for encontrada, é então procurada no ambiente léxico da função.