Нюансҳои доираи дидабарии тағирёбандаҳо дар сохтҳои if-else дар JavaScript
Доираи дидабарии тағирёбандаҳо як нюанси муайян дорад.
Биёед онро бо мисол баррасӣ кунем.
Биёед берун аз шароити мо тағирёбандаи
res-ро бо як қимат эълон кунем, ва дар дохили
шароит ин қиматро ба дигаре иваз кунем:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // 2-ро хориҷ мекунад
Чунон ки шумо мебинед, тағирёбандаи res дар дохили шароит тағйир ёфт.
Аммо, ҳама чиз тағйир меёбад,
агар дар дохили шароит инчунин тағирёбандаи
res-ро тавассути let эълон кунем:
let res = 1;
if (true) {
let res = 2; // тағирёбандаро тавассути let эълон мекунем
}
console.log(res); // 1-ро хориҷ мекунад, на 2!
Дар ин ҷо ҳамаи кор дар он аст, ки эълони тағирёбанда
тавассути let дар дохили шароит тағирёбандаи маҳаллии
res-ро эҷод мекунад.
Яъне дар дохили шароит як тағирёбандаи
res вуҷуд дорад,
ва берун аз шароит - дигаре.
Дар ин бора метавон боварӣ ҳосил кард, қимати тағирёбандаро
дар консол дар дохили шароит хориҷ кард:
let res = 1;
if (true) {
let res = 2;
console.log(res); // 2-ро хориҷ мекунад
}
console.log(res); // 1-ро хориҷ мекунад
Муаллифи коди дар поён овардашуда мехост санҷиши синни ба 18
расиданро иҷро кунад. Аммо, код, дар ҳар гуна қимати син
дар консол қимати undefined-ро хориҷ мекунад.
Иштибоҳи муаллифи кодро ислоҳ кунед. Ин коди мушкилӣ аст:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Муаллифи коди дар поён овардашуда мехост санҷиши синни ба 18
расиданро иҷро кунад. Пас аз санҷиши код маълум шуд, ки агар
синн баробар ё аз 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);