Toegang tot eksterne veranderlikes van funksies in JavaScript

Kom ons kyk na die volgende kode:

javascriptlet num = 1; // stel die veranderlike se waarde

function func() {
  console.log(num); // vertoon dit in die konsole
}

func(); // roep die funksie

Soos ek vroeër genoem het, hoef die waarde van die veranderlike nie noodwendig voor die definisie van die funksie te wees nie, die belangrijkste is dat dit voor die roeping daarvan staan:

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

let num = 1;
func();

Eintlik is dit nie heeltemal so nie. Ons funksie weet selfs voor sy aanroep die waarde van die veranderlike num:

javascriptlet num = 1;

function func() {
  console.log(num); // die funksie weet reeds dat num = 1
}

Hier is 'n meer ingewikkelde voorbeeld:

javascriptlet num = 1; // op hierdie oomblik leer die funksie dat num = 1

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

num = 2; // op hierdie oomblik leer die funksie dat num = 2

Laat ons funksie-aanroepe byvoeg:

javascriptlet num = 1; // op hierdie oomblik leer die funksie dat num = 1
func(); // sal 1 vertoon

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

func(); // sal 1 vertoon
num = 2; // op hierdie oomblik leer die funksie dat num = 2
func(); // sal 2 vertoon

Nogmaals: eintlik weet die funksie die waardes van eksterne veranderlikes, selfs sonder om geroep te word.