Лексичко окружење функција у ЈаваСкрипту

Све спољашње, функцији доступне променљиве, називају се њеним лексичким окружењем (LexicalEnvironment).

У следећем примеру функцији су доступне две променљиве: num1 и num2, које и чине лексичко окружење наше функције:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // функција зна за променљиве num1 и num2
}

Само лексичко окружење представља неки унутрашњи ЈаваСкрипт објекат, везан за нашу функцију. У овом случају њега се може представити у следећем облику:

javascript{num1: 1, num2: 2}

Вредност било које променљиве лексичког окружења увек је једнака тренутној вредности те променљиве:

javascriptlet num1 = 1; // окружење {num1: 1}
let num2 = 2; // окружење {num1: 1, num2: 2}

// Променимо променљиву num1:
num1 = 123; // окружење {num1: 123, num2: 2}

function func() {
  
}

Када покушамо да приступимо било којој променљивој унутар функције, та променљива се прво тражи међу локалним променљивима функције и, ако такве променљиве тамо нема, тражи се у лексичком окружењу функције.