Нюанси на областта на видимост на променливите в конструкции 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);