Variablers synlighetsområde i if-else i JavaScript
La oss for enkelhets skyld ha en betingelse som alltid utføres:
if (true) {
}
La oss se på følgende kode:
if (true) {
let res = '!';
}
console.log(res);
Som du ser, skal variabelen res
få verdien '!'. Men,
hvis du kjører denne koden, vil det komme en
feilmelding i konsollen!
Grunnen er at variabler deklarert innenfor krøllparenteser, kun er synlige innenfor disse parentesene, og ikke synlige utenfor. Vitenskapelig sett snakker vi her om variablers synlighetsområde.
Man kan si at synlighetsområdet for variabler deklarert innenfor krøllparenteser, kun er disse krøllparentesene. Men, hvis en variabel er deklarert utenfor krøllparentesene, er den synlig både inni dem og utenfor:
let res; // variabel deklarert utenfor
if (true) {
res = '!';
}
console.log(res); // vil skrive ut '!'
I det neste eksemplet blir variabelen res
avhengig av betingelsen satt til enten
verdien 1, eller verdien 2:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Men hvis du kjører denne koden, vil det komme en feilmelding i konsollen. Som du nå forstår, handler det hele om variabeles synlighet. For å løse problemet deklarerer vi variabelen utenfor betingelsen:
let test = true;
let res; // deklarerer variabelen utenfor betingelsen
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // vil skrive ut 1
Forfatteren av koden nedenfor ønsket å utføre
en sjekk av alder for å oppnå 18
år. Koden fungerer imidlertid ikke. Rett opp
feilen i forfatterens kode. Her er den problematiske koden:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);