Области дидани тағирёбандаҳо дар if-else дар JavaScript
Бигзор барои содагӣ шароите дошта бошем, ки ҳамеша иҷро мешавад:
if (true) {
}
Биёед коди зеринро дида бароем:
if (true) {
let res = '!';
}
console.log(res);
Чӣ тавр ки шумо мебинед, ба тағирёбандаи res
бояд қимати '!' сабт шавад. Аммо,
агар ин кодро оғоз кунем, дар консоли хатогии
намоиш дода мешавад!
Масъала он аст, ки тағирёбандаҳое, ки дар даруни қавсҳои каҷӣ эълон шудаанд, танҳо дар дохили ин қавсҳо намоён буда, ва аз берун дида намешаванд. Бо забони илмӣ дар инҷо дар бораи области дидани тағирёбандаҳо сухан меравад.
Мумкин аст гуфт, ки области дидани тағирёбандаҳое, ки дар дохили қавсҳои каҷӣ эълон шудаанд, танҳо ҳамон қавсҳои каҷӣ мебошанд. Аммо, агар тағирёбанда аз беруни қавсҳои каҷӣ эълон шуда бошад, пас дар дохили онҳо, ва аз берун намоён аст:
let res; // тағирёбанда аз берун эълон шудааст
if (true) {
res = '!';
}
console.log(res); // '!'-ро намоиш медиҳад
Дар мисоли зерин ба тағирёбандаи res
вобаста ба шароят ё қимати 1, ё қимати 2 сабт мешавад:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Аммо, агар ин кодро оғоз кунем, дар консоли хатогии намоиш дода мешавад. Чӣ тавр ки шумо ҳоло фаҳмидед, ҳамаи кор ба дидани тағирёбандаҳо вобаста аст. Барои ҳалли мушкилот тағирёбандаро аз беруни шароят эълон кунем:
let test = true;
let res; // тағирёбандаро аз беруни шароят эълон мекунем
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // 1-ро намоиш медиҳад
Муаллифи коди дар поён овардашуда мехост
санҷиши синну солро барои расидан ба 18
солагӣ иҷро кунад. Код, аммо, кор намекунад. Хатои
муаллифи кодро ислоҳ кунед. Коди мушкилдор ин аст:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);