Prístup k externým premenným funkcií v JavaScripte
Pozrime sa na nasledujúci kód:
let num = 1; // nastavíme hodnotu premennej
function func() {
console.log(num); // vypíšeme ju do konzoly
}
func(); // voláme funkciu
Ako som už spomínal skôr, hodnota premennej nemusí byť nevyhnutne pred definíciou funkcie, dôležité je, aby bola pred jej volaním:
function func() {
console.log(num);
}
let num = 1;
func();
V skutočnosti to nie je úplne tak. Naša funkcia
aj pred svojím volaním pozná hodnotu premennej
num:
let num = 1;
function func() {
console.log(num); // funkcia už vie, že num = 1
}
Tu je zložitejší príklad:
let num = 1; // funkcia v tomto momente zistí, že num = 1
function func() {
console.log(num);
}
num = 2; // funkcia v tomto momente zistí, že num = 2
Pridajme volania funkcie:
let num = 1; // funkcia v tomto momente zistí, že num = 1
func(); // vypíše 1
function func() {
console.log(num);
}
func(); // vypíše 1
num = 2; // funkcia v tomto momente zistí, že num = 2
func(); // vypíše 2
Ešte raz: v skutočnosti funkcia pozná hodnoty externých premenných, aj keď nie je volaná.