Почему нельзя объявлять переменную внутри {...} в JS?
Переменная в функции / условном операторе / цикле доступна только там, из вне она не доступна.
Чтобы использовать ее вне, объявить ее нужно тоже вне:

let value;

if (true) {
  value = 'val';
}

console.log(value)
Вам сюда и дальше по ссылкам.