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