Nomi di variabili identici nelle funzioni in JavaScript
Supponiamo che sia all'esterno che all'interno della funzione ci sia una variabile
num. In questo caso, qualsiasi modifica
alla variabile locale num non influisce in alcun modo
sulla variabile globale num:
let num = 1; // variabile globale
function func() {
let num = 2; // variabile locale
console.log(num);
}
func(); // chiamiamo la funzione, stamperà 2
console.log(num); // stamperà 1 - la variabile globale non è cambiata
Ma, se dimentichiamo di dichiarare la variabile locale
num tramite let, allora all'interno della funzione
non verrà creata la variabile locale num,
ma semplicemente verrà modificata la variabile globale:
let num = 1;
function func() {
num = 2; // dimenticato di scrivere let - modifichiamo la variabile esterna
console.log(num);
}
func(); // chiamiamo la funzione, stamperà 2
console.log(num); // stamperà 2 - la variabile è cambiata
Qui possono verificarsi due situazioni: o volevamo davvero
cambiare la variabile globale (allora
tutto ok), oppure abbiamo dimenticato let e accidentalmente
cambiato la variabile globale.
Il secondo caso è un errore difficile da individuare,
che porta a un comportamento imprevedibile dello script.
Pertanto, ogni volta che si introduce una nuova variabile, dichiaratela
sempre tramite let.
Determinate, senza eseguire il codice, cosa verrà stampato in console:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Determinate, senza eseguire il codice, cosa verrà stampato in console:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);