A változók hatóköre if-else szerkezetekben JavaScriptben

Az egyszerűség kedvéért tegyük fel, hogy van egy mindig teljesülő feltételünk:

javascriptif (true) {
  
}

Nézzük a következő kódot:

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

console.log(res);

Amint látható, a res változóba az '!' értéknek kellene beíródnia. Azonban, ha ezt a kódot futtatjuk, akkor a konzolba egy hiba íródik ki!

Az oka az, hogy a kapcsos zárójeleken belül deklarált változók csak azon belül láthatók, kívülről nem. Tudományos nyelven ez a változók hatóköre témakörébe tartozik.

Úgy is mondhatjuk, hogy a kapcsos zárójelek belsejében deklarált változók hatóköre csak azok a kapcsos zárójelek. Azonban, ha egy változó a kapcsos zárójeleken kívül van deklarálva, akkor az mind azokon belül, mind azokon kívül látható:

javascriptlet res; // a változó kívül van deklarálva

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

console.log(res); // kiírja '!'-t

A következő példában a res változóba a feltételtől függően vagy az 1, vagy a 2 érték kerül:

javascriptlet num = 5;

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

console.log(res);

Azonban, ha ezt a kódot futtatjuk, akkor a konzolba hiba íródik ki. Most már, ahogy megértjük, ennek oka a változók láthatósága. A probléma megoldáséért deklaráljuk a változót a feltételen kívül:

javascriptlet test = true;
let res; // deklaráljuk a változót a feltételen kívül

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

console.log(res); // kiírja 1-et
Задание 1

Az alábbi kód szerzője azt szerette volna ellenőrizni, hogy elérték-e a 18 évet. A kód azonban nem működik. Javítsa a kód szerzőjének hibáját. Íme a problémás kód:

javascriptlet age = 17;

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

console.log(adult);