Объявление — это именованное утверждение функции; выражение присваивает функцию переменной. Практическая разница заключается в hoisting.
();
() { ; }
();
expressed = () { ; };
Объявление — это именованное утверждение функции; выражение присваивает функцию переменной. Практическая разница заключается в hoisting.
();
() { ; }
();
expressed = () { ; };
Библиотека вопросов для IT-собеседований с подробными ответами — от Junior до Senior.
ПоддержатьОбъявления функций поднимаются вместе с их телом, поэтому вся функция существует до того, как выполнение до неё дойдёт. Функциональное выражение — это просто значение, присвоенное переменной — в точке раннего вызова expressed всё ещё undefined (с var) или находится в TDZ (с let/const).
// expression — for callbacks, conditional definitions, arrow functions
const handler = () => doThing();
const fn = condition ? a : b;
arr.map(x => x * 2);
// declaration — clear, hoisted top-level functions
function calculateTotal(items) { ... }
Объявления хорошо читаются для именованных функций верхнего уровня и получают преимущества от hoisting (вы можете определить их после их использования). Выражения необходимы для стрелочных функций, обратных вызовов, IIFE и условного присваивания функций. Стрелочные функции всегда являются выражениями.