Nijanse opsega vidljivosti promenljivih u if-else konstrukcijama u JavaScript-u
Opseg vidljivosti promenljivih ima određenu
nijansu. Hajde da je razmotrimo na primeru.
Hajde da deklarišemo izvan našeg uslova promenljivu
res sa jednom vrednošću, a unutar
uslova promenimo tu vrednost na drugu:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // ispisaće 2
Kao što vidite, promenljiva res se promenila
unutar uslova. Međutim, sve će se promeniti,
ako unutar uslova takođe deklarišemo promenljivu
res preko let:
let res = 1;
if (true) {
let res = 2; // deklarišimo promenljivu preko let
}
console.log(res); // ispisaće 1, a ne 2!
Ovde je stvar u tome što je deklaracija promenljive
preko let unutar uslova napravila lokalnu
promenljivu res.
To jest, unutar uslova postoji jedna promenljiva
res, a izvan uslova - druga.
U to možemo se uveriti, ispisavši vrednost promenljive
u konzolu unutar uslova:
let res = 1;
if (true) {
let res = 2;
console.log(res); // ispisaće 2
}
console.log(res); // ispisaće 1
Autor donjeg koda je želeo da izvrši
proveru da li je dostignuto 18
godina. Međutim, kod pri bilo kojoj vrednosti godina
ispisuje u konzolu vrednost undefined.
Ispravite grešku autora koda. Eto problematičnog koda:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Autor donjeg koda je želeo da izvrši
proveru da li je dostignuto 18
godina. Nakon provere koda ispostavilo se da ako
godine jesu jednake ili veće od 18 godina, onda
se u promenljivu adult upisuje true,
kako i treba, međutim, ako su godine manje
od 18, onda promenljiva adult ima
vrednost undefined. Ispravite grešku
autora koda.
Eto problematičnog koda:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Autor donjeg koda je želeo da izvrši
proveru godina. Međutim, kod pri bilo kojoj
vrednosti godina ispisuje u konzolu vrednost
undefined. Ispravite grešku autora koda.
Eto problematičnog koda:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'od 18 do 23';
} else {
let res = 'više od 23';
}
} else {
let res = 'manje od 18';
}
console.log(res);
Autor donjeg koda je želeo da izvrši
proveru godina. Međutim, kod pri vrednosti
godina većoj od 18 godina ispisuje u
konzolu vrednost undefined. Ispravite
grešku autora koda.
Eto problematičnog koda:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'od 18 do 23';
} else {
res = 'više od 23';
}
} else {
res = 'manje od 18';
}
console.log(res);