Muutujate nähtavuspiirkond if-else konstruktsioonides JavaScriptis

Lihtsuse mõttes oletame, et meil on alati täituv tingimus:

javascriptif (true) {
  
}

Vaatleme järgmist koodi:

javascriptif (true) {
  let res = '!';
}

console.log(res);

Nagu näete, peaks muutujasse res kirjutatama väärtus '!'. Kui aga käivitada see kood, kuvatakse konsooli veateade!

Asi on selles, et muutujad, mis on deklareeritud lookuliste sulgude sees, on nähtavad ainult nende sulgude sees ja ei ole nähtavad väljaspool neid. Teaduslikult öeldes on siin tegemist muutujate nähtavuspiirkonnaga.

Võib öelda, et muutujate nähtavuspiirkond, mis on deklareeritud lookuliste sulgude sees, on ainult need lookulised sulud. Kui aga muutuja on deklareeritud sulgude väljaspool, siis on see nähtav nii nende sees kui ka väljaspool:

javascriptlet res; // muutuja deklareeritud väljaspool

if (true) {
  res = '!';
}

console.log(res); // kuvab '!'

Järgmises näites kirjutatakse muutujasse res sõltuvalt tingimusest kas väärtus 1 või väärtus 2:

javascriptlet num = 5;

if (num >= 0) {
  let res = 1;
} else {
  let res = 2;
}

console.log(res);

Kui aga käivitada see kood, kuvatakse konsooli veateade. Nagu te nüüd juba mõistate, on asi muutujate nähtavuses. Probleemi lahendamiseks deklareerime muutuja tingimusest väljaspool:

javascriptlet test = true;
let res; // deklareerime muutuja tingimusest väljaspool

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

console.log(res); // kuvab 1
Задание 1

Allpool toodud koodi autor soovis teha vanuse kontrolli, kas on saavutatud 18 aastat. Kood aga ei tööta. Parandage koodi autoriga tehtud viga. Siin on probleemne kood:

javascriptlet age = 17;

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

console.log(adult);