Փոփոխականների տեսանելիության տիրույթը if-else-ում JavaScript-ում

Պարզության համար ենթադրենք, որ գոյություն ունի միշտ կատարվող պայման։

javascriptif (true) {
  
}

Դիտարկենք հետևյալ կոդը։

javascriptif (true) {
  let res = '!';
}

console.log(res);

Ինչպես տեսնում եք, res փոփոխականին պետք է վերագրվի '!' արժեքը։ Սակայն, եթե գործարկեք այս կոդը, ապա կոնսոլում կցուցադրվի սխալ։

Բանն այն է, որ փոփոխականները, որոնք հայտարարված են ձևավոր փակագծերի ներսում, տեսանելի են միայն այդ փակագծերի ներսում և դրսից տեսանելի չեն։ Գիտականորեն այստեղ խոսքը փոփոխականների տեսանելիության տիրույթի մասին է։

Կարելի է ասել, որ ձևավոր փակագծերի ներսում հայտարարված փոփոխականների տեսանելիության տիրույթը միայն այդ ձևավոր փակագծերն են։ Սակայն, եթե փոփոխականը հայտարարված է դրսում, ապա այն տեսանելի է և՛ ներսում, և՛ դրսում։

javascriptlet res; // փոփոխականը հայտարարված է դրսում

if (true) {
  res = '!';
}

console.log(res); // կցուցադրի '!'

Հետևյալ օրինակում res փոփոխականին կախված պայմանից վերագրվում է կամ 1, կամ 2 արժեքը։

javascriptlet num = 5;

if (num >= 0) {
  let res = 1;
} else {
  let res = 2;
}

console.log(res);

Սակայն, եթե գործարկեք այս կոդը, ապա կոնսոլում կցուցադրվի սխալ։ Ինչպես հիմա արդեն հասկանում եք, ամբողջ բանը փոփոխականների տեսանելիության մեջ է։ Խնդիրը լուծելու համար հայտարարենք փոփոխականը դրսում։

javascriptlet test = true;
let res; // հայտարարենք փոփոխականը պայմանի դրսում

if (test) {
  res = 1;
} else {
  res = 2;
}

console.log(res); // կցուցադրի 1
Задание 1

Ստորև բերված կոդի հեղինակը ցանկանում էր կատարել տարիքի ստուգում՝ 18 տարեկան դառնալու համար։ Սակայն կոդը չի աշխատում։ Ուղղեք կոդի հեղինակի սխալը։ Ահա խնդրահարույց կոդը։

javascriptlet age = 17;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);