Oblasť viditeľnosti premenných v if-else v JavaScript
Nech pre jednoduchosť máme vždy splnenú podmienku:
if (true) {
}
Pozrime sa na nasledujúci kód:
if (true) {
let res = '!';
}
console.log(res);
Ako vidíte, do premennej res
by sa malo zapísať hodnota '!'. Avšak,
ak spustíte tento kód, do konzoly sa vypíše
chyba!
Vec sa má tak, že premenné, deklarované vnútri zložených zátvoriek, sú viditeľné len vnútri týchto zátvoriek a nie sú viditeľné vonku. Vedecksy povedané tu ide o oblasť viditeľnosti premenných.
Môžeme povedať, že oblasťou viditeľnosti premenných, deklarovaných vnútri zložených zátvoriek, sú len tieto zložené zátvorky. Avšak, ak je premenná deklarovaná vonku zložených zátvoriek, tak je viditeľná aj vnútri nich, aj vonku:
let res; // premenná deklarovaná vonku
if (true) {
res = '!';
}
console.log(res); // vypíše '!'
V nasledujúcom príklade sa do premennej res
v závislosti od podmienky zapíše buď
hodnota 1, alebo hodnota 2:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Avšak, ak spustíte tento kód, do konzoly sa vypíše chyba. Ako už teraz chápete, celá vec je vo viditeľnosti premenných. Na vyriešenie problému deklarujme premennú vonku podmienky:
let test = true;
let res; // deklarujeme premennú vonku podmienky
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // vypíše 1
Autor uvedeného kódu chcel vykonať
kontrolu veku na dosiahnutie 18
rokov. Kód však nefunguje. Opravte
chybu autora kódu. Tu je problematický kód:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);