Oblasť viditeľnosti premenných v if-else v JavaScript

Nech pre jednoduchosť máme vždy splnenú podmienku:

javascriptif (true) {
  
}

Pozrime sa na nasledujúci kód:

javascriptif (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:

javascriptlet 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:

javascriptlet 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:

javascriptlet test = true;
let res; // deklarujeme premennú vonku podmienky

if (test) {
  res = 1;
} else {
  res = 2;
}

console.log(res); // vypíše 1
Задание 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:

javascriptlet age = 17;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);