Что появится в консоли при вызове функций №8

Сначала выведется «Привет!», затем возникнет ReferenceError при обращении к greetArrow до её инициализации. До тела стрелочной функции выполнение не дойдёт.

Короткий ответ

Что ответить на собеседовании

Сначала выведется «Привет!», затем возникнет ReferenceError при обращении к greetArrow до её инициализации. До тела стрелочной функции выполнение не дойдёт.

Подробный разбор

Ответ с пояснениями

Условие

greet();
greetArrow();

function greet() {
  console.log('Привет!');
}

const greetArrow = () => {
  console.log('Привет!');
}

Каким будет результат вывода в консоль?

Ответ

Сначала выведется «Привет!», затем возникнет ReferenceError при обращении к greetArrow до её инициализации. До тела стрелочной функции выполнение не дойдёт.

Объявление function greet доступно до своей позиции в тексте программы. Переменная const greetArrow существует в лексическом окружении, но до выполнения объявления находится в temporal dead zone. Поэтому ошибка возникает при чтении переменной, а не из-за особенностей вызова стрелок.

Исправление — перенести greetArrow() ниже присваивания функции. Замена const на var не решает задачу: до присваивания там будет undefined, вызов которого даст TypeError.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее