Dostop do zunanjih spremenljivk funkcij v JavaScript
Oglejmo si naslednjo kodo:
let num = 1; // nastavimo vrednost spremenljivke
function func() {
console.log(num); // izpišemo jo v konzolo
}
func(); // kličemo funkcijo
Kot sem že omenil prej, vrednost spremenljivke ni nujno, da je pred definicijo funkcije, glavno je, da je pred njenim klicem:
function func() {
console.log(num);
}
let num = 1;
func();
Pravzaprav to ni povsem res. Naša funkcija
celo pred svojim klicem pozna vrednost spremenljivke
num:
let num = 1;
function func() {
console.log(num); // funkcija že ve, da je num = 1
}
Tu je bolj zapleten primer:
let num = 1; // funkcija v tem trenutku izve, da je num = 1
function func() {
console.log(num);
}
num = 2; // funkcija v tem trenutku izve, da je num = 2
Dodajmo klic funkcije:
let num = 1; // funkcija v tem trenutku izve, da je num = 1
func(); // izpiše 1
function func() {
console.log(num);
}
func(); // izpiše 1
num = 2; // funkcija v tem trenutku izve, da je num = 2
func(); // izpiše 2
Še enkrat: pravzaprav funkcija pozna vrednosti zunanjih spremenljivk, tudi če ni bila klicana.