Ujanja wa Eneo la Kuonekana la Vigezo katika Miundo ya if-else katika JavaScript

Eneo la kuonekana la vigezo lina ujanja fulani. Tutauchunguza kwa mfano. Tutatanguliza nje ya masharti yetu kigezo res chenye thamani moja, na ndani ya masharti tubadilishe thamani hiyo kuwa nyingine:

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // itatoa 2

Kama unavyoona, kigezo res kilibadilika ndani ya masharti. Hata hivyo, kila kitu kitabadilika, kama ndani ya masharti pia tutatanguliza kigezo res kupitia let:

javascriptlet res = 1;

if (true) {
  let res = 2; // tutatanguliza kigezo kupitia let
}

console.log(res); // itatoa 1, siyo 2!

Hapa jibu liko katika ukweli kwamba utangulizi wa kigezo kupitia let ndani ya masharti uliunda kigezo cha ndani res.

Yaani ndani ya masharti kunamo kigezo kimoja res, na nje ya masharti - kingine. Kuthibitisha hii kunaweza, kwa kuonyesha thamani ya kigezo katika konsoli ndani ya masharti:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // itatoa 2
}

console.log(res); // itatoa 1
Задание 1

Mwandishi wa msimbo ulio hapa chini alitaka kutekeleza ukaguzi wa umri kufikia miaka 18. Msimbo, hata hivyo, kwa thamani yoyote ya umri inatoa katika konsoli thamani ya undefined. Sahihisha makosa ya mwandishi wa msimbo. Huu ndio msimbo wenye shida:

javascriptlet age = 17;
let adult;

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

console.log(adult);
Задание 2

Mwandishi wa msimbo ulio hapa chini alitaka kutekeleza ukaguzi wa umri kufikia miaka 18. Baada ya ukaguzi wa msimbo ulibainika kuwa kama umri ni sawa au zaidi ya miaka 18, basi kwenye kigezo adult kinaandikwa true, kama inavyotakiwa, hata hivyo, kama umri ni chini ya 18, basi kigezo adult kina thamani ya undefined. Sahihisha makosa ya mwandishi wa msimbo.

Huu ndio msimbo wenye shida:

javascriptlet age = 17;
let adult;

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

console.log(adult);
Задание 3

Mwandishi wa msimbo ulio hapa chini alitaka kutekeleza ukaguzi wa umri. Msimbo, hata hivyo, kwa thamani yoyote ya umri unaotoa katika konsoli thamani ya undefined. Sahihisha makosa ya mwandishi wa msimbo.

Huu ndio msimbo wenye shida:

javascriptlet age = 17;
let res;

if (age >= 18) {
  if (age <= 23) {
    let res = 'kutoka 18 hadi 23';
  } else {
    let res = 'zaidi ya 23';
  }
} else {
  let res = 'chini ya 18';
}

console.log(res);
Задание 4

Mwandishi wa msimbo ulio hapa chini alitaka kutekeleza ukaguzi wa umri. Msimbo, hata hivyo, kwa thamani ya umri mkubwa kuliko miaka 18 unaotoa katika konsoli thamani ya undefined. Sahihisha makosa ya mwandishi wa msimbo.

Huu ndio msimbo wenye shida:

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = 'kutoka 18 hadi 23';
  } else {
    res = 'zaidi ya 23';
  }
} else {
  res = 'chini ya 18';
}

console.log(res);