Област видљивости променљивих у if-else у JavaScript-у
Нека за једноставност имамо услов који се увек извршава:
if (true) {
}
Хајде да размотримо следећи код:
if (true) {
let res = '!';
}
console.log(res);
Као што видите, у променљиву res
би требало да се упише вредност '!'. Међутим,
ако покренете овај код, у конзолу ће се исписати
грешка!
Ствар је у томе што су променљиве, декларисане унутар витичастих заграда, видљиве само унутар тих заграда, а нису видљиве споља. Научно речено, овде се ради о области видљивости променљивих.
Може се рећи да је област видљивости променљивих, декларисаних унутар витичастих заграда, само те витичасте заграде. Међутим, ако је променљива декларисана изван витичастих заграда, онда је видљива и унутар њих, и споља:
let res; // променљива је декларисана споља
if (true) {
res = '!';
}
console.log(res); // исписаће '!'
У следећем примеру у променљиву res
у зависности од услова се уписује или
вредност 1, или вредност 2:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Међутим, ако покренете овај код, у конзолу ће се исписати грешка. Као што сада већ разумете, све је у видљивости променљивих. Да бисмо решили проблем, декларишимо променљиву изван услова:
let test = true;
let res; // декларишимо променљиву изван услова
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // исписаће 1
Аутор доле наведеног кода је желео да изврши
проверу да ли је старост достигла 18
година. Код, међутим, не ради. Исправите
грешку аутора кода. Ево проблематичног кода:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);