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