JavaScript да иф-else конструкцияларида ўзгарувчилар кўриниш соҳасининг нюанслари
Ўзгарувчилар кўриниш соҳаси бир қанча
нюансга эга. Келинг уни мисолда кўриб чиқайлик.
Шартимизнинг ташқарисида res ўзгарувчисини
бир қиймат билан эълон қилайлик, ва шарт ичида
бу қийматни бошқасига ўзгартирайлик:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // 2 ни чиқаради
Кўриб тургангизdek, res ўзгарувчиси
шарт ичида ўзгарди. Аммо, шарт ичида res
ўзгарувчисини let орқали яна эълон қилсак,
ҳамма нарса ўзгаради:
let res = 1;
if (true) {
let res = 2; // ўзгарувчини let орқали эълон қиламиз
}
console.log(res); // 2 эмас, 1 ни чиқаради!
Бу ердаги исъ шундаки, шарт ичида let
орқали ўзгарувчини эълон қилиш локаль res
ўзгарувчисини яратиб берди.
Яъни шарт ичида бир res ўзгарувчиси
мавжуд, шарт ташқарисида эса - бошқаси.
Буни шарт ичида ўзгарувчи қийматини консольга
чиқариб кўриш мумкин:
let res = 1;
if (true) {
let res = 2;
console.log(res); // 2 ни чиқаради
}
console.log(res); // 1 ни чиқаради
Қуйидаги код муаллифи ёши 18
га yetganligini текширмоқчи бўлган. Аммо код,
ҳар қандай ёш қийматида консольга
undefined қийматини чиқармоқда.
Код муаллифининг хатосини тўғринг. Мана муаммоли код:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Қуйидаги код муаллифи ёши 18
га yetganligini текширмоқчи бўлган. Кодни текширишдан сўнг
маълум бўлдики, агар ёш 18 дан катта ёки тенг бўлса,
adult ўзгарувчисига true ёзилади,
худди бўлиши керакдек, аммо агар ёш 18 дан кичик бўлса,
adult ўзгарувчисининг қиймати
undefined бўлади. Код муаллифининг хатосини тўғринг.
Мана муаммоли код:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Қуйидаги код муаллифи ёшни текширмоқчи бўлган.
Аммо код, ҳар қандай
ёш қийматида консольга
undefined қийматини чиқармоқда. Код муаллифининг хатосини тўғринг.
Мана муаммоли код:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = '18 дан 23 гача';
} else {
let res = '23 дан катта';
}
} else {
let res = '18 дан кичик';
}
console.log(res);
Қуйидаги код муаллифи ёшни текширмоқчи бўлган.
Аммо код, ёш қиймати
18 дан катта бўлганда консольга
undefined қийматини чиқармоқда. Код муаллифининг хатосини тўғринг.
Мана муаммоли код:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = '18 дан 23 гача';
} else {
res = '23 дан катта';
}
} else {
res = '18 дан кичик';
}
console.log(res);