Nuancer af variablers rækkevidde i if-else konstruktioner i JavaScript
Variablers rækkevidde har en vis
nuance. Lad os se på det med et eksempel.
Lad os erklære en variabel res uden for vores betingelse
med én værdi, og inde i
betingelsen ændre denne værdi til en anden:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // vil udskrive 2
Som du kan se, blev variablen res ændret
inde i betingelsen. Alt ændrer sig dog,
hvis vi også erklærer variablen
res inde i betingelsen via let:
let res = 1;
if (true) {
let res = 2; // erklær variabel via let
}
console.log(res); // vil udskrive 1, ikke 2!
Her handler det hele om, at erklæringen af variablen
via let inde i betingelsen skabte en lokal
variabel res.
Det vil sige, at inde i betingelsen eksisterer den ene variabel
res, og uden for betingelsen - en anden.
Du kan overbevise dig selv om dette ved at udskrive værdien af variablen
i konsollen inde i betingelsen:
let res = 1;
if (true) {
let res = 2;
console.log(res); // vil udskrive 2
}
console.log(res); // vil udskrive 1
Forfatteren af koden nedenfor ønskede at udføre
en alderskontrol for at opnå 18
år. Koden udskriver dog uanset aldersværdien
værdien undefined i konsollen.
Ret kodeforfatterens fejl. Her er den problematiske kode:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Forfatteren af koden nedenfor ønskede at udføre
en alderskontrol for at opnå 18
år. Efter kontrol af koden viste det sig, at hvis
alderen er lig med eller større end 18 år, så
bliver true skrevet til variablen adult,
som det skal være, men hvis alderen er mindre end
18, har variablen adult
værdien undefined. Ret kodeforfatterens fejl.
Her er den problematiske kode:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Forfatteren af koden nedenfor ønskede at udføre
en alderskontrol. Koden udskriver dog uanset
aldersværdien værdien undefined i konsollen.
Ret kodeforfatterens fejl.
Her er den problematiske kode:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'fra 18 til 23';
} else {
let res = 'mere end 23';
}
} else {
let res = 'mindre end 18';
}
console.log(res);
Forfatteren af koden nedenfor ønskede at udføre
en alderskontrol. Koden udskriver dog ved en aldersværdi
større end 18 år værdien undefined i
konsollen. Ret kodeforfatterens fejl.
Her er den problematiske kode:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'fra 18 til 23';
} else {
res = 'mere end 23';
}
} else {
res = 'mindre end 18';
}
console.log(res);