Приступ спољним променљивим функција у JavaScript-у

Хајде да погледамо следећи код:

javascriptlet num = 1; // задаје се вредност променљиве

function func() {
  console.log(num); // исписује је у конзолу
}

func(); // позива функцију

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

javascriptfunction func() {
  console.log(num);
}

let num = 1;
func();

Заправо то није сасвим тачно. Наша функција чак и пре свог позива зна вредност променљиве num:

javascriptlet num = 1;

function func() {
  console.log(num); // функција већ зна да је num = 1
}

Ево сложенијег примера:

javascriptlet num = 1; // функција у овом тренутку сазнаје да је num = 1

function func() {
  console.log(num);
}

num = 2; // функција у овом тренутку сазнаје да је num = 2

Додајмо позиве функције:

javascriptlet num = 1; // функција у овом тренутку сазнаје да је num = 1
func(); // исписаће 1

function func() {
  console.log(num);
}

func(); // исписаће 1
num = 2; // функција у овом тренутку сазнаје да је num = 2
func(); // исписаће 2

Још једном: заправо функција зна вредности спољних променљивих, чак и ако није била позвана.