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