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