A függvények külső változóinak elérése JavaScriptben

Nézzük a következő kódot:

javascriptlet num = 1; // beállítjuk a változó értékét

function func() {
  console.log(num); // kiírjuk a konzolra
}

func(); // meghívjuk a függvényt

Ahogyan már említettem korábban, a változó értékének nem feltétlenül kell a függvény definíciója előtt állnia, a lényeg, hogy a hívása előtt legyen beállítva:

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

let num = 1;
func();

Valójában ez nem teljesen így van. A függvényünk még a meghívása előtt ismeri a num változó értékét:

javascriptlet num = 1;

function func() {
  console.log(num); // a függvény már tudja, hogy num = 1
}

Itt egy bonyolultabb példa:

javascriptlet num = 1; // ebben a pillanatban a függvény megtudja, hogy num = 1

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

num = 2; // ebben a pillanatban a függvény megtudja, hogy num = 2

Adjunk hozzá függvényhívásokat:

javascriptlet num = 1; // ebben a pillanatban a függvény megtudja, hogy num = 1
func(); // kiírja: 1

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

func(); // kiírja: 1
num = 2; // ebben a pillanatban a függvény megtudja, hogy num = 2
func(); // kiírja: 2

Még egyszer: valójában a függvény ismeri a külső változók értékeit még akkor is, ha nem hívták meg.