Področje veljavnosti spremenljivk v if-else v JavaScript
Za preprostost vzemimo, da imamo vedno izpolnjen pogoj:
if (true) {
}
Oglejmo si naslednjo kodo:
if (true) {
let res = '!';
}
console.log(res);
Kot lahko vidite, bi se morala v spremenljivko res
zapisati vrednost '!'. Vendar,
če zaženemo to kodo, se bo v konzolo izpisala
napaka!
Bistvo je v tem, da so spremenljivke, deklarirane znotraj zavitih oklepajev, vidne samo znotraj teh oklepajev in niso vidne zunaj. Znanstveno rečeno gre tukaj za področje veljavnosti spremenljivk.
Lahko rečemo, da je področje veljavnosti spremenljivk, deklariranih znotraj zvitih oklepajev, omejeno le na te zavite oklepaje. Vendar, če je spremenljivka deklarirana zunaj zvitih oklepajev, je vidna tako znotraj njih kot zunaj:
let res; // spremenljivka deklarirana zunaj
if (true) {
res = '!';
}
console.log(res); // bo izpisal '!'
V naslednjem primeru se v spremenljivko res
glede na pogoj zapiše bodisi
vrednost 1, bodisi vrednost 2:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Vendar, če zaženemo to kodo, se bo v konzolo izpisala napaka. Kot zdaj razumete, je ves problem v vidnosti spremenljivk. Za rešitev težave deklarirajmo spremenljivko zunaj pogoja:
let test = true;
let res; // deklarirajmo spremenljivko zunaj pogoja
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // bo izpisal 1
Avtor spodnje kode je želel izvesti
preverjanje starosti za dopolnitev 18
let. Koda pa ne deluje. Popravite
napako avtorja kode. Tukaj je problematična koda:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);