JavaScript да if-else даги ўзгарувчиларнинг кўриш соҳаси
Соддалиги учун бизда ҳар доим бажариладиган шарт бор деб фараз қилайлик:
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
ёшга yetilganликни текширмоқчи бўлган. Код, аммо, ишламайди.
Код муаллифининг хатосини тузатинг. Мана муаммоли код:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);