JavaScript-da if-else konstruksiyalarida o'zgaruvchilar ko'rish sohasining nuanslari

O'zgaruvchilar ko'rish sohasi bir qancha nuansga ega. Keling, uni misol orqali ko'rib chiqaylik. Shartimizdan tashqarida res o'zgaruvchisini bir qiymat bilan e'lon qilaylik, shart ichida esa ushbu qiymatni boshqasiga o'zgartiramiz:

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // 2 ni chiqaradi

Ko'rib turganingizdek, res o'zgaruvchisi shart ichida o'zgartirildi. Biroq, hammasi o'zgaradi, agar shart ichida res o'zgaruvchisi let orqali qayta e'lon qilinsa:

javascriptlet res = 1;

if (true) {
  let res = 2; // o'zgaruvchini let orqali e'lon qilamiz
}

console.log(res); // 2 emas, 1 ni chiqaradi!

Bu yerda butun ish shundaki, shart ichida let orqali o'zgaruvchi e'lon qilish mahalliy res o'zgaruvchisini yaratdi.

Ya'ni shart ichida bitta res o'zgaruvchisi mavjud, shartdan tashqarida esa - boshqasi. Bunga ishonch hosil qilish uchun o'zgaruvchi qiymatini shart ichida konsolga chiqarish mumkin:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // 2 ni chiqaradi
}

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

Quyidagi kod muallifi yoshning 18 yoshga yetganligini tekshirmoqchi edi. Biroq, kod har qanday yosh qiymatida konsolga undefined qiymatini chiqaradi. Kod muallifining xatosini tuzating. Muammoli kod:

javascriptlet age = 17;
let adult;

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

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

Quyidagi kod muallifi yoshning 18 yoshga yetganligini tekshirmoqchi edi. Kodni tekshirgandan so'ng, ma'lum bo'ldiki, agar yosh 18 yoshga teng yoki undan katta bo'lsa, adult o'zgaruvchisiga true yoziladi, xuddi shunday bo'lishi kerakdek, biroq, agar yosh 18 dan kichik bo'lsa, adult o'zgaruvchisi undefined qiymatiga ega. Kod muallifining xatosini tuzating.

Muammoli kod:

javascriptlet age = 17;
let adult;

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

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

Quyidagi kod muallifi yoshni tekshirmoqchi edi. Biroq, kod har qanday yosh qiymatida konsolga undefined qiymatini chiqaradi. Kod muallifining xatosini tuzating.

Muammoli kod:

javascriptlet age = 17;
let res;

if (age >= 18) {
  if (age <= 23) {
    let res = '18 dan 23 gacha';
  } else {
    let res = '23 dan katta';
  }
} else {
  let res = '18 dan kichik';
}

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

Quyidagi kod muallifi yoshni tekshirmoqchi edi. Biroq, kod yosh qiymati 18 yoshdan katta bo'lganda konsolga undefined qiymatini chiqaradi. Kod muallifining xatosini tuzating.

Muammoli kod:

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = '18 dan 23 gacha';
  } else {
    res = '23 dan katta';
  }
} else {
  res = '18 dan kichik';
}

console.log(res);