A változók hatóköre if-else szerkezetekben JavaScriptben
Az egyszerűség kedvéért tegyük fel, hogy van egy mindig teljesülő feltételünk:
if (true) {
}
Nézzük a következő kódot:
if (true) {
let res = '!';
}
console.log(res);
Amint látható, a res változóba
az '!' értéknek kellene beíródnia. Azonban,
ha ezt a kódot futtatjuk, akkor a konzolba egy
hiba íródik ki!
Az oka az, hogy a kapcsos zárójeleken belül deklarált változók csak azon belül láthatók, kívülről nem. Tudományos nyelven ez a változók hatóköre témakörébe tartozik.
Úgy is mondhatjuk, hogy a kapcsos zárójelek belsejében deklarált változók hatóköre csak azok a kapcsos zárójelek. Azonban, ha egy változó a kapcsos zárójeleken kívül van deklarálva, akkor az mind azokon belül, mind azokon kívül látható:
let res; // a változó kívül van deklarálva
if (true) {
res = '!';
}
console.log(res); // kiírja '!'-t
A következő példában a res változóba
a feltételtől függően vagy az 1,
vagy a 2 érték kerül:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Azonban, ha ezt a kódot futtatjuk, akkor a konzolba hiba íródik ki. Most már, ahogy megértjük, ennek oka a változók láthatósága. A probléma megoldáséért deklaráljuk a változót a feltételen kívül:
let test = true;
let res; // deklaráljuk a változót a feltételen kívül
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // kiírja 1-et
Az alábbi kód szerzője azt szerette volna ellenőrizni,
hogy elérték-e a 18
évet. A kód azonban nem működik. Javítsa
a kód szerzőjének hibáját. Íme a problémás kód:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);