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:
let 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:
let 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:
let res = 1;
if (true) {
let res = 2;
console.log(res); // 2 ni chiqaradi
}
console.log(res); // 1 ni chiqaradi
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:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
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:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Quyidagi kod muallifi yoshni tekshirmoqchi edi.
Biroq, kod har qanday yosh qiymatida
konsolga undefined qiymatini chiqaradi.
Kod muallifining xatosini tuzating.
Muammoli kod:
let 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);
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:
let 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);