Dostęp do zewnętrznych zmiennych funkcji w JavaScript
Rozważmy następujący kod:
let num = 1; // ustawiamy wartość zmiennej
function func() {
console.log(num); // wypisujemy ją w konsoli
}
func(); // wywołujemy funkcję
Jak już wcześniej wspomniałem, wartość zmiennej niekoniecznie musi być przed definicją funkcji, ważne, żeby była przed jej wywołaniem:
function func() {
console.log(num);
}
let num = 1;
func();
W rzeczywistości nie jest to do końca prawdą. Nasza funkcja
nawet przed swoim wywołaniem zna wartość zmiennej
num:
let num = 1;
function func() {
console.log(num); // funkcja już wie, że num = 1
}
Oto bardziej złożony przykład:
let num = 1; // funkcja w tym momencie dowiaduje się, że num = 1
function func() {
console.log(num);
}
num = 2; // funkcja w tym momencie dowiaduje się, że num = 2
Dodajmy wywołania funkcji:
let num = 1; // funkcja w tym momencie dowiaduje się, że num = 1
func(); // wypisze 1
function func() {
console.log(num);
}
func(); // wypisze 1
num = 2; // funkcja w tym momencie dowiaduje się, że num = 2
func(); // wypisze 2
Jeszcze raz: w rzeczywistości funkcja zna wartości zmiennych zewnętrznych, nawet nie będąc wywołana.