Identieke variabelenamen in functies in JavaScript
Stel dat zowel buiten de functie als binnen een variabele
num is. In dit geval hebben eventuele wijzigingen
aan de lokale variabele num geen
invloed op de globale variabele num:
let num = 1; // globale variabele
function func() {
let num = 2; // lokale variabele
console.log(num);
}
func(); // roep de functie aan, geeft 2 weer
console.log(num); // geeft 1 weer - globale variabele is niet veranderd
Maar als we vergeten de lokale variabele
num te declareren via let, dan
wordt er binnen de functie geen lokale variabele num aangemaakt,
maar wordt simpelweg de globale variabele gewijzigd:
let num = 1;
function func() {
num = 2; // vergat let te schrijven - wijzigt externe variabele
console.log(num);
}
func(); // roep de functie aan, geeft 2 weer
console.log(num); // geeft 2 weer - variabele is veranderd
Hier zijn twee situaties mogelijk: of we wilden echt
de globale variabele wijzigen (dan is
alles oké), of we vergaten let en wijzigden per ongeluk
de globale variabele.
Het tweede geval is een moeilijk te vinden fout,
die leidt tot onvoorspelbaar gedrag van het script.
Declareer daarom altijd, wanneer je een nieuwe variabele introduceert,
deze via let.
Bepaal, zonder de code uit te voeren, wat er in de console wordt weergegeven:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Bepaal, zonder de code uit te voeren, wat er in de console wordt weergegeven:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);