Accesso alle variabili esterne delle funzioni in JavaScript
Consideriamo il seguente codice:
let num = 1; // impostiamo il valore della variabile
function func() {
console.log(num); // lo visualizziamo nella console
}
func(); // chiamiamo la funzione
Come ho menzionato in precedenza, il valore della variabile non deve necessariamente essere prima della definizione della funzione, l'importante è che sia prima della sua chiamata:
function func() {
console.log(num);
}
let num = 1;
func();
In realtà non è esattamente così. La nostra funzione
conosce il valore della variabile anche prima della sua chiamata
num:
let num = 1;
function func() {
console.log(num); // la funzione sa già che num = 1
}
Ecco un esempio più complesso:
let num = 1; // in questo momento la funzione scopre che num = 1
function func() {
console.log(num);
}
num = 2; // in questo momento la funzione scopre che num = 2
Aggiungiamo le chiamate alla funzione:
let num = 1; // in questo momento la funzione scopre che num = 1
func(); // visualizzerà 1
function func() {
console.log(num);
}
func(); // visualizzerà 1
num = 2; // in questo momento la funzione scopre che num = 2
func(); // visualizzerà 2
Ripeto: in realtà la funzione conosce i valori delle variabili esterne, anche senza essere chiamata.