A változók hatókörének finomságai az if-else szerkezetekben JavaScriptben
A változók hatókörének van egy bizonyos
finomsága. Nézzük meg ezt egy példán.
Declaráljunk a feltételünken kívül egy
res változót egy értékkel, majd a feltétel
belsejében változtassuk meg ezt az értéket egy másikra:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // kiírja a 2-t
Amint látod, a res változó megváltozott
a feltétel belsejében. Mindazonáltal minden megváltozik,
ha a feltétel belsejében a res változót
let-tel declaráljuk:
let res = 1;
if (true) {
let res = 2; // declaráljuk a változót let-tel
}
console.log(res); // kiírja az 1-et, nem a 2-t!
Itt az a helyzet, hogy a változó declarálása
let-tel a feltétel belsejében egy lokális
res változót hozott létre.
Vagyis a feltétel belsejében egy res változó
létezik, a feltételen kívül pedig egy másik.
Ebben meg lehet győződni, ha a változó értékét
a konzolra írjuk a feltétel belsejében:
let res = 1;
if (true) {
let res = 2;
console.log(res); // kiírja a 2-t
}
console.log(res); // kiírja az 1-et
Az alábbi kód szerzője azt szerette volna ellenőrizni,
hogy a kor elérte-e a 18
évet. A kód azonban a kor bármely értékénél
undefined értéket írja a konzolra.
Javítsd a kód szerzőjének hibáját. Itt a problémás kód:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Az alábbi kód szerzője azt szerette volna ellenőrizni,
hogy a kor elérte-e a 18
évet. A kód ellenőrzése után kiderült, hogy ha
a kor egyenlő vagy nagyobb, mint 18 év, akkor
a adult változóba true kerül rögzítésre,
ahogy annak lennie kell, azonban ha a kor kisebb
mint 18, akkor a adult változó
undefined értékkel rendelkezik. Javítsd a kód
szerzőjének hibáját.
Itt a problémás kód:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Az alábbi kód szerzője a kor ellenőrzését szerette volna
elvégezni. A kód azonban a kor bármely
értékénél undefined értéket ír a konzolra.
Javítsd a kód szerzőjének hibáját.
Itt a problémás kód:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = '18 és 23 között';
} else {
let res = '23 felett';
}
} else {
let res = '18 alatt';
}
console.log(res);
Az alábbi kód szerzője a kor ellenőrzését szerette volna
elvégezni. A kód azonban, ha a kor
nagyobb mint 18 év, undefined értéket ír a
konzolra. Javítsd a kód szerzőjének hibáját.
Itt a problémás kód:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = '18 és 23 között';
} else {
res = '23 felett';
}
} else {
res = '18 alatt';
}
console.log(res);