Funktsioonide juurdepääs välistele muutujatele JavaScriptis
Vaatleme järgmist koodi:
let num = 1; // määrame muutuja väärtuse
function func() {
console.log(num); // väljastame selle konsooli
}
func(); // kutsume funktsiooni välja
Nagu ma varem mainisin, ei pea muutuja väärtus tingimata olema enne funktsiooni määratlust, peamine on, et see oleks enne selle väljakutset:
function func() {
console.log(num);
}
let num = 1;
func();
Tegelikult ei ole see päris nii. Meie funktsioon
teab muutuja väärtust isegi enne oma väljakutset
num:
let num = 1;
function func() {
console.log(num); // funktsioon juba teab, et num = 1
}
Siin on keerulisem näide:
let num = 1; // funktsioon saab sel hetkel teada, et num = 1
function func() {
console.log(num);
}
num = 2; // funktsioon saab sel hetkel teada, et num = 2
Lisame funktsiooni väljakutsed:
let num = 1; // funktsioon saab sel hetkel teada, et num = 1
func(); // väljastab 1
function func() {
console.log(num);
}
func(); // väljastab 1
num = 2; // funktsioon saab sel hetkel teada, et num = 2
func(); // väljastab 2
Veelkord: tegelikult funktsioon teab väliste muutujate väärtusi isegi siis, kui teda pole välja kutsutud.