Област видљивости променљивих у if-else у JavaScript-у

Нека за једноставност имамо услов који се увек извршава:

javascriptif (true) {
  
}

Хајде да размотримо следећи код:

javascriptif (true) {
  let res = '!';
}

console.log(res);

Као што видите, у променљиву res би требало да се упише вредност '!'. Међутим, ако покренете овај код, у конзолу ће се исписати грешка!

Ствар је у томе што су променљиве, декларисане унутар витичастих заграда, видљиве само унутар тих заграда, а нису видљиве споља. Научно речено, овде се ради о области видљивости променљивих.

Може се рећи да је област видљивости променљивих, декларисаних унутар витичастих заграда, само те витичасте заграде. Међутим, ако је променљива декларисана изван витичастих заграда, онда је видљива и унутар њих, и споља:

javascriptlet res; // променљива је декларисана споља

if (true) {
  res = '!';
}

console.log(res); // исписаће '!'

У следећем примеру у променљиву res у зависности од услова се уписује или вредност 1, или вредност 2:

javascriptlet num = 5;

if (num >= 0) {
  let res = 1;
} else {
  let res = 2;
}

console.log(res);

Међутим, ако покренете овај код, у конзолу ће се исписати грешка. Као што сада већ разумете, све је у видљивости променљивих. Да бисмо решили проблем, декларишимо променљиву изван услова:

javascriptlet test = true;
let res; // декларишимо променљиву изван услова

if (test) {
  res = 1;
} else {
  res = 2;
}

console.log(res); // исписаће 1
Задание 1

Аутор доле наведеног кода је желео да изврши проверу да ли је старост достигла 18 година. Код, међутим, не ради. Исправите грешку аутора кода. Ево проблематичног кода:

javascriptlet age = 17;

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

console.log(adult);