If-else da o'zgaruvchilarning ko'rinish sohasi JavaScriptda

Soddalik uchun, doimo bajariladigan shartni olaylik:

javascriptif (true) {
  
}

Keling, quyidagi kodni ko'rib chiqaylik:

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

console.log(res);

Ko'rib turganingizdek, res o'zgaruvchisiga '!' qiymati yozilishi kerak. Biroq, agar ushbu kodni ishga tushirsangiz, konsolda xatolik paydo bo'ladi!

Gap shundaki, jingalak qavs ichida e'lon qilingan o'zgaruvchilar faqat shu qavslar ichida ko'rinadi, tashqarida ko'rinmaydi. Ilmiy nuqtai nazardan bu o'zgaruvchilarning ko'rinish sohasi haqida gap ketadi.

Jingalak qavslar ichida e'lon qilingan o'zgaruvchilarning ko'rinish sohasi faqat shu jingalak qavslardir, deyish mumkin. Biroq, agar o'zgaruvchi jingalak qavslar tashqarisida e'lon qilingan bo'lsa, u ham ichida, ham tashqarida ko'rinadi:

javascriptlet res; // o'zgaruvchi tashqarida e'lon qilingan

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

console.log(res); // '!' ni chiqaradi

Quyidagi misolda res o'zgaruvchisiga shartga qarab 1 yoki 2 qiymati yoziladi:

javascriptlet num = 5;

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

console.log(res);

Biroq, agar ushbu kodni ishga tushirsangiz, konsolda xatolik paydo bo'ladi. Endi tushunganingizdek, muammo o'zgaruvchilarning ko'rinishida. Muammoni hal qilish uchun o'zgaruvchini shart tashqarisida e'lon qilamiz:

javascriptlet test = true;
let res; // o'zgaruvchini shart tashqarisida e'lon qilamiz

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

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

Quyida keltirilgan kod muallifi yoshni 18 yoshga yetganligini tekshirmoqchi edi. Biroq, kod ishlamaydi. Kod muallifining xatosini tuzating. Mana muammoli kod:

javascriptlet age = 17;

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

console.log(adult);