Nuanchat e fushëveprimit të variablave në konstruksionet if-else në JavaScript
Fusha e vëzhgimit të variablave ka një
nuancë të caktuar. Le ta shqyrtojmë atë me një shembull.
Le të deklarojmë jashtë kushtit tonë një variabël
res me një vlerë, dhe brenda
kushtit ta ndryshojmë këtë vlerë në një tjetër:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // do të shfaqë 2
Siç e shihni, ndryshorja res u ndryshua
brenda kushtit. Megjithatë, gjithçka do të ndryshojë,
nëse brenda kushtit deklarohet edhe ndryshorja
res përmes let:
let res = 1;
if (true) {
let res = 2; // le të deklarojmë variablin përmes let
}
console.log(res); // do të shfaqë 1, jo 2!
Këtu e gjitha qëndron në faktin se deklarimi i variablit
përmes let brenda kushtit krijoi një variabël lokale
res.
Kjo do të thotë se brenda kushtit ekziston një variabël
res, dhe jashtë kushtit - një tjetër.
Këtë mund ta verifikoni duke shfaqur vlerën e variablit
në konsol brenda kushtit:
let res = 1;
if (true) {
let res = 2;
console.log(res); // do të shfaqë 2
}
console.log(res); // do të shfaqë 1
Autori i kodit të dhënë më poshtë donte të kryente
një kontroll moshe për arritjen e 18
vjeç. Megjithatë, kodi, në çdo vlerë moshe
shfaq në konsol vlerën undefined.
Korrigjoni gabimin e autorit të kodit. Ja kodi problematik:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Autori i kodit të dhënë më poshtë donte të kryente
një kontroll moshe për arritjen e 18
vjeç. Pas kontrollit të kodit doli se nëse
mosha është e barabartë ose më e madhe se 18 vjeç, atëherë
në variablin adult shkruhet true,
siç duhet të jetë, megjithatë, nëse mosha është më e vogël
se 18, atëherë variabli adult ka
vlerën undefined. Korrigjoni gabimin
të autorit të kodit.
Ja kodi problematik:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Autori i kodit të dhënë më poshtë donte të kryente
një kontroll moshe. Megjithatë, kodi, në çdo
vlerë moshe shfaq në konsol vlerën
undefined. Korrigjoni gabimin e autorit të kodit.
Ja kodi problematik:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'nga 18 deri në 23';
} else {
let res = 'më shumë se 23';
}
} else {
let res = 'më pak se 18';
}
console.log(res);
Autori i kodit të dhënë më poshtë donte të kryente
një kontroll moshe. Megjithatë, kodi, në vlerën
e moshës më të madhe se 18 vjeç shfaq në
konsol vlerën undefined. Korrigjoni
gabimin e autorit të kodit.
Ja kodi problematik:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'nga 18 deri në 23';
} else {
res = 'më shumë se 23';
}
} else {
res = 'më pak se 18';
}
console.log(res);