В обычной чистой области видимости будет выведено undefined. Объявление var создаёт привязку до выполнения кода, но присваивание 9 происходит только на следующей строке.
Какой вывод получит console.log при объявлении переменной через var после её использования
В обычной чистой области видимости будет выведено undefined. Объявление var создаёт привязку до выполнения кода, но присваивание 9 происходит только на следующей строке.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой текст появится в консоли при выполнении следующего фрагмента кода:
console.log(value);
var value = 9;
Ответ
В обычной чистой области видимости будет выведено undefined. Объявление var создаёт привязку до выполнения кода, но присваивание 9 происходит только на следующей строке.
Это hoisting объявления, а не перенос присваивания наверх. В момент console.log переменная уже существует и инициализирована undefined, поэтому ReferenceError не возникает.
С let или const чтение до объявления попало бы в temporal dead zone и завершилось ошибкой. Оговорка о чистой области важна для повторного исполнения в общей консоли: существующая ранее var value могла бы сохранять старое значение до нового присваивания.