Объявление функции использует ключевое слово function и полностью поднимается (hoisted), что означает, что её можно вызвать до того, как она появится в коде.
greet(); // Работает отлично
function greet() { return "Hello"; }
Функциональное выражение присваивает функцию переменной. Поднимается только объявление переменной, но не само присваивание функции, поэтому вызов до определения выбросит ошибку.
greet(); // TypeError: greet is not a function
var greet = function() { return "Hello"; };
Стрелочные функции — это компактный синтаксис для функциональных выражений и следуют тем же правилам поднятия — они не поднимаются.
const greet = () => "Hello";
this: Стрелочные функции не имеют собственного this — они наследуют его из окружающей области видимости, в отличие от обычных объявлений функций и выраженийОбъявления функций полностью поднимаются и могут быть вызваны до того, как они появятся в коде, в то время как выражения функций, присвоенные переменным, не поднимаются и выбросят TypeError при вызове до присваивания.
Новый — ещё не проверен сообществом
Вы