Փոփոխականների տեսանելիության տիրույթը 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);