ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗jsPmCdScpN 135 of 505 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

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