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