Přístup k externím proměnným funkcí v JavaScriptu
Podívejme se na následující kód:
let num = 1; // nastavíme hodnotu proměnné
function func() {
console.log(num); // vypíšeme ji do konzole
}
func(); // zavoláme funkci
Jak jsem již zmiňoval dříve, hodnota proměnné nemusí nutně být před definicí funkce, hlavní je, aby byla před jejím voláním:
function func() {
console.log(num);
}
let num = 1;
func();
Ve skutečnosti to není tak úplně pravda. Naše funkce
již dokonce před svým voláním zná hodnotu proměnné
num:
let num = 1;
function func() {
console.log(num); // funkce již ví, že num = 1
}
Zde je složitější příklad:
let num = 1; // funkce v tomto okamžiku zjistí, že num = 1
function func() {
console.log(num);
}
num = 2; // funkce v tomto okamžiku zjistí, že num = 2
Přidejme volání funkce:
let num = 1; // funkce v tomto okamžiku zjistí, že num = 1
func(); // vypíše 1
function func() {
console.log(num);
}
func(); // vypíše 1
num = 2; // funkce v tomto okamžiku zjistí, že num = 2
func(); // vypíše 2
Ještě jednou: ve skutečnosti funkce zná hodnoty externích proměnných, dokonce i když není volána.