Нијанси на опсегот на видливост на променливите во 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);