# Область видимости переменных в 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);`
← →
↑
en ru