Accesul la variabilele externe ale funcțiilor în JavaScript

Să luăm în considerare următorul cod:

javascriptlet num = 1; // setăm valoarea variabilei

function func() {
  console.log(num); // îl afișăm în consolă
}

func(); // apelăm funcția

După cum am menționat anterior, valoarea variabilei nu trebuie neapărat să fie înainte de definirea funcției, principalul este să fie înainte de apelarea ei:

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

let num = 1;
func();

De fapt, acest lucru nu este chiar așa. Funcția noastră cunoaște valoarea variabilei num chiar înainte de apelarea ei:

javascriptlet num = 1;

function func() {
  console.log(num); // funcția știe deja că num = 1
}

Iată un exemplu mai complex:

javascriptlet num = 1; // funcția în acest moment află că num = 1

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

num = 2; // funcția în acest moment află că num = 2

Să adăugăm apeluri ale funcției:

javascriptlet num = 1; // funcția în acest moment află că num = 1
func(); // va afișa 1

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

func(); // va afișa 1
num = 2; // funcția în acest moment află că num = 2
func(); // va afișa 2

Încă o dată: de fapt, funcția cunoaște valorile variabilelor externe, chiar și fără a fi apelată.