Сначала выведется «Привет!», затем возникнет ReferenceError при обращении к greetArrow до её инициализации. До тела стрелочной функции выполнение не дойдёт.
Что появится в консоли при вызове функций №8
Сначала выведется «Привет!», затем возникнет 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.