A változók hatókörének finomságai az if-else szerkezetekben JavaScriptben

A változók hatókörének van egy bizonyos finomsága. Nézzük meg ezt egy példán. Declaráljunk a feltételünken kívül egy res változót egy értékkel, majd a feltétel belsejében változtassuk meg ezt az értéket egy másikra:

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // kiírja a 2-t

Amint látod, a res változó megváltozott a feltétel belsejében. Mindazonáltal minden megváltozik, ha a feltétel belsejében a res változót let-tel declaráljuk:

javascriptlet res = 1;

if (true) {
  let res = 2; // declaráljuk a változót let-tel
}

console.log(res); // kiírja az 1-et, nem a 2-t!

Itt az a helyzet, hogy a változó declarálása let-tel a feltétel belsejében egy lokális res változót hozott létre.

Vagyis a feltétel belsejében egy res változó létezik, a feltételen kívül pedig egy másik. Ebben meg lehet győződni, ha a változó értékét a konzolra írjuk a feltétel belsejében:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // kiírja a 2-t
}

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

Az alábbi kód szerzője azt szerette volna ellenőrizni, hogy a kor elérte-e a 18 évet. A kód azonban a kor bármely értékénél undefined értéket írja a konzolra. Javítsd a kód szerzőjének hibáját. Itt a problémás kód:

javascriptlet age = 17;
let adult;

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

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

Az alábbi kód szerzője azt szerette volna ellenőrizni, hogy a kor elérte-e a 18 évet. A kód ellenőrzése után kiderült, hogy ha a kor egyenlő vagy nagyobb, mint 18 év, akkor a adult változóba true kerül rögzítésre, ahogy annak lennie kell, azonban ha a kor kisebb mint 18, akkor a adult változó undefined értékkel rendelkezik. Javítsd a kód szerzőjének hibáját.

Itt a problémás kód:

javascriptlet age = 17;
let adult;

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

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

Az alábbi kód szerzője a kor ellenőrzését szerette volna elvégezni. A kód azonban a kor bármely értékénél undefined értéket ír a konzolra. Javítsd a kód szerzőjének hibáját.

Itt a problémás kód:

javascriptlet age = 17;
let res;

if (age >= 18) {
  if (age <= 23) {
    let res = '18 és 23 között';
  } else {
    let res = '23 felett';
  }
} else {
  let res = '18 alatt';
}

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

Az alábbi kód szerzője a kor ellenőrzését szerette volna elvégezni. A kód azonban, ha a kor nagyobb mint 18 év, undefined értéket ír a konzolra. Javítsd a kód szerzőjének hibáját.

Itt a problémás kód:

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = '18 és 23 között';
  } else {
    res = '23 felett';
  }
} else {
  res = '18 alatt';
}

console.log(res);