Nuansy rozsahu viditeľnosti premenných v konštrukciách if-else v JavaScripte

Rozsah viditeľnosti premenných má určité nuansy. Poďme si ich ukázať na príklade. Deklarujme mimo našej podmienky premennú res s jednou hodnotou a vnútri podmienky zmeňme túto hodnotu na inú:

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // vypíše 2

Ako vidíte, premenná res sa zmenila vnútri podmienky. Všetko sa však zmení, ak vnútri podmienky tiež deklarujeme premennú res pomocou let:

javascriptlet res = 1;

if (true) {
  let res = 2; // deklarujeme premennú pomocou let
}

console.log(res); // vypíše 1, nie 2!

Príčina je v tom, že deklarácia premennej pomocou let vnútri podmienky vytvorila lokálnu premennú res.

To znamená, že vnútri podmienky existuje jedna premenná res a mimo podmienky - iná. Presvedčiť sa o tom môžeme výpisom hodnoty premennej do konzoly vnútri podmienky:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // vypíše 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 pri akejkoľvek hodnote veku vypíše do konzoly hodnotu undefined. Opravte chybu autora kódu. Tu je problematický kód:

javascriptlet age = 17;
let adult;

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

console.log(adult);
Задание 2

Autor uvedeného kódu chcel vykonať kontrolu veku na dosiahnutie 18 rokov. Po kontrole kódu sa ukázalo, že ak vek je rovný alebo väčší ako 18 rokov, tak do premennej adult sa zapíše true, ako má byť, avšak ak je vek menší ako 18, tak premenná adult má hodnotu undefined. Opravte chybu autora kódu.

Tu je problematický kód:

javascriptlet age = 17;
let adult;

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

console.log(adult);
Задание 3

Autor uvedeného kódu chcel vykonať kontrolu veku. Kód však pri akejkoľvek hodnote veku vypíše do konzoly hodnotu undefined. Opravte chybu autora kódu.

Tu je problematický kód:

javascriptlet age = 17;
let res;

if (age >= 18) {
  if (age <= 23) {
    let res = 'od 18 do 23';
  } else {
    let res = 'viac ako 23';
  }
} else {
  let res = 'menej ako 18';
}

console.log(res);
Задание 4

Autor uvedeného kódu chcel vykonať kontrolu veku. Kód však pri hodnote veku väčšom ako 18 rokov vypíše do konzoly hodnotu undefined. Opravte chybu autora kódu.

Tu je problematický kód:

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = 'od 18 do 23';
  } else {
    res = 'viac ako 23';
  }
} else {
  res = 'menej ako 18';
}

console.log(res);