Muutujate nähtavuspiirkond if-else konstruktsioonides JavaScriptis
Lihtsuse mõttes oletame, et meil on alati täituv tingimus:
if (true) {
}
Vaatleme järgmist koodi:
if (true) {
let res = '!';
}
console.log(res);
Nagu näete, peaks muutujasse res
kirjutatama väärtus '!'. Kui aga
käivitada see kood, kuvatakse konsooli
veateade!
Asi on selles, et muutujad, mis on deklareeritud lookuliste sulgude sees, on nähtavad ainult nende sulgude sees ja ei ole nähtavad väljaspool neid. Teaduslikult öeldes on siin tegemist muutujate nähtavuspiirkonnaga.
Võib öelda, et muutujate nähtavuspiirkond, mis on deklareeritud lookuliste sulgude sees, on ainult need lookulised sulud. Kui aga muutuja on deklareeritud sulgude väljaspool, siis on see nähtav nii nende sees kui ka väljaspool:
let res; // muutuja deklareeritud väljaspool
if (true) {
res = '!';
}
console.log(res); // kuvab '!'
Järgmises näites kirjutatakse muutujasse res
sõltuvalt tingimusest kas
väärtus 1 või väärtus 2:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Kui aga käivitada see kood, kuvatakse konsooli veateade. Nagu te nüüd juba mõistate, on asi muutujate nähtavuses. Probleemi lahendamiseks deklareerime muutuja tingimusest väljaspool:
let test = true;
let res; // deklareerime muutuja tingimusest väljaspool
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // kuvab 1
Allpool toodud koodi autor soovis teha
vanuse kontrolli, kas on saavutatud 18
aastat. Kood aga ei tööta. Parandage
koodi autoriga tehtud viga. Siin on probleemne kood:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);