JavaScript да if-else даги ўзгарувчиларнинг кўриш соҳаси

Соддалиги учун бизда ҳар доим бажариладиган шарт бор деб фараз қилайлик:

javascriptif (true) {
  
}

Келгина, куйидаги кодни кўриб чиқайлик:

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

console.log(res);

Кўриб турганингиздек, res ўзгарувчисига '!' қиймати ёзилиши керак. Аммо, бу кодни ишга туширсангиз, консольда хато чиқади!

Гапи шундаки, жами яйчиқ ичида эълон қилинган ўзгарувчилар фақатгина ўша яйчиқлар ичидагина кўринади, улардан ташқарида кўринмайди. Илмий нуқтаи назардан бу ерда ўзгарувчиларнинг кўриш соҳаси ҳақида гап боради.

Жами яйчиқ ичида эълон қилинган ўзгарувчиларнинг кўриш соҳаси фақатгина ўша жами яйчиқлардир, деб айтиш мумкин. Аммо, агар ўзгарувчи жами яйчиқлардан ташқарида эълон қилинган бўлса, у ҳам улар ичида, ҳам ташқарида кўринади:

javascriptlet res; // ўзгарувчи ташқарида эълон қилинган

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

console.log(res); // '!' ни чиқаради

Куйидаги мисолда res ўзгарувчисига шартга боғлиқ холда ёки 1 қиймати, ёки 2 қиймати ёзилади:

javascriptlet num = 5;

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

console.log(res);

Аммо, бу кодни ишга туширсангиз, консольда хато чиқади. Ҳозиргача тушунаётганингиздек, гап барчаси ўзгарувчиларнинг кўриниши билан. Муаммони ҳал этиш учун ўзгарувчини шартдан ташқарида эълон қилайлик:

javascriptlet test = true;
let res; // ўзгарувчини шартдан ташқарида эълон қиламиз

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

console.log(res); // 1 ни чиқаради
Задание 1

Куйидаги коднинг муаллифи 18 ёшга yetilganликни текширмоқчи бўлган. Код, аммо, ишламайди. Код муаллифининг хатосини тузатинг. Мана муаммоли код:

javascriptlet age = 17;

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

console.log(adult);