Toegang tot externe variabelen van functies in JavaScript

Laten we de volgende code bekijken:

javascriptlet num = 1; // stel de waarde van de variabele in

function func() {
  console.log(num); // geef het weer in de console
}

func(); // roep de functie aan

Zoals ik eerder al noemde, hoeft de waarde van de variabele niet per se vóór de definitie van de functie te staan, het belangrijkste is dat het vóór haar aanroep staat:

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

let num = 1;
func();

Eigenlijk is dit niet helemaal waar. Onze functie kent de waarde van de variabele num zelfs vóór haar aanroep:

javascriptlet num = 1;

function func() {
  console.log(num); // de functie weet al dat num = 1
}

Hier is een complexer voorbeeld:

javascriptlet num = 1; // op dit moment weet de functie dat num = 1

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

num = 2; // op dit moment weet de functie dat num = 2

Laten we functie-aanroepen toevoegen:

javascriptlet num = 1; // op dit moment weet de functie dat num = 1
func(); // geeft 1 weer

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

func(); // geeft 1 weer
num = 2; // op dit moment weet de functie dat num = 2
func(); // geeft 2 weer

Nogmaals: eigenlijk kent de functie de waarden van externe variabelen, zelfs zonder aangeroepen te zijn.