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:
let 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:
let 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:
let res = 1;
if (true) {
let res = 2;
console.log(res); // itatoa 2
}
console.log(res); // itatoa 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:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
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:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
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:
let 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);
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:
let 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);