Интерпретатор прокатился по коду. Нашёл переменную a, так? Больше ничего нет, поэтому он ринулся исполнять код. Я думаю, ты согласен с тем, что console.log отрабатывает на стадии исполнения кода. Ничего не упустил? Значит, интерпретатор уже исполняет код и на втором логе он кидает экзепшен о несуществующей переменной
мне кажется есть типа глобальная функция
которая создает лекическое окружение в виде оъекта window
и типа этот объект window существует как замыкание этой функции,
поэтому { } а именно глобальный скоуп, изолирован от let и const,
кажется тебе эта интерпритация чуть подробней ?