Identiske variabelnavne i funktioner i JavaScript
Lad der både udenfor funktionen og inde i den være en variabel
num. I dette tilfælde vil enhver ændring
af den lokale variabel num ikke have nogen
indflydelse på den globale variabel num:
let num = 1; // global variabel
function func() {
let num = 2; // lokal variabel
console.log(num);
}
func(); // kalder funktionen, udskriver 2
console.log(num); // udskriver 1 - den globale variabel er ikke ændret
Men hvis vi glemmer at deklarere den lokale variabel
num med let, så vil der ikke blive oprettet en lokal variabel num inde i funktionen,
men den globale variabel vil blive ændret:
let num = 1;
function func() {
num = 2; // glemte at skrive let - ændrer den eksterne variabel
console.log(num);
}
func(); // kalder funktionen, udskriver 2
console.log(num); // udskriver 2 - variablen er ændret
Der kan være to situationer: enten havde vi virkelig
til hensigt at ændre den globale variabel (så er
alt okay), eller også glemte vi let og ændrede
ved et uheld den globale variabel.
Den anden situation er en vanskeligt opdagelig fejl,
der leder til uforudsigelig adfærd i scriptet.
Derfor skal du altid, når du indfører en ny variabel, deklarere
den med let.
Bestem, uden at køre koden, hvad der vil blive udskrevet i konsollen:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Bestem, uden at køre koden, hvad der vil blive udskrevet i konsollen:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);