Aksesi në variabla të jashtme të funksioneve në JavaScript

Le të shqyrtojmë kodin e mëposhtëm:

javascriptlet num = 1; // caktojmë vlerën e variablës

function func() {
  console.log(num); // e shfaqim atë në konsol
}

func(); // thërrasim funksionin

Siç e kam përmendur më parë, vlera e variablës nuk është e domosdoshme të jetë para përcaktimit të funksionit, kryesorja është që të jetë para thirrjes së tij:

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

let num = 1;
func();

Në fakt kjo nuk është plotësisht e saktë. Funksioni ynë edhe para thirrjes së vet e di vlerën e variablës num:

javascriptlet num = 1;

function func() {
  console.log(num); // funksioni tashmë e di se num = 1
}

Këtu është një shembull më i ndërlikuar:

javascriptlet num = 1; // funksioni në këtë moment mëson se num = 1

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

num = 2; // funksioni në këtë moment mëson se num = 2

Le të shtojmë thirrje të funksionit:

javascriptlet num = 1; // funksioni në këtë moment mëson se num = 1
func(); // do të shfaqë 1

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

func(); // do të shfaqë 1
num = 2; // funksioni në këtë moment mëson se num = 2
func(); // do të shfaqë 2

Edhe një herë: në fakt funksioni i di vlerat e variablave të jashtme, edhe pa u thirrur.