Entorno Léxico de Funciones en JavaScript
Todas las variables externas accesibles para una función se denominan su entorno léxico (LexicalEnvironment).
En el siguiente ejemplo, la función tiene acceso a dos
variables: num1 y num2, las cuales
son el entorno léxico de nuestra función:
let num1 = 1;
let num2 = 2;
function func() {
// la función conoce las variables num1 y num2
}
El entorno léxico en sí es un objeto interno de JavaScript, vinculado a nuestra función. En este caso, se puede representar de la siguiente manera:
{num1: 1, num2: 2}
El valor de cualquier variable del entorno léxico siempre es igual al valor actual de esa variable:
let num1 = 1; // entorno {num1: 1}
let num2 = 2; // entorno {num1: 1, num2: 2}
// Cambiemos la variable num1:
num1 = 123; // entorno {num1: 123, num2: 2}
function func() {
}
Cuando intentamos acceder a cualquier variable dentro de una función, esta variable primero se busca entre las variables locales de la función y, si no se encuentra allí, entonces se busca en el entorno léxico de la función.