Встречается на собеседованиях • сегодня

В чем разница между Function Expression, Function Declaration и стрелочной функцией

Function Declaration объявляется с ключевым словом function и поднимается (hoisting), поэтому доступна до объявления:

javascript
sayHi(); // Работает
function sayHi() { return 'Hi!'; }

Function Expression создается при присвоении функции переменной, не подвергается hoisting:

javascript
sayHi(); // Ошибка
const sayHi = function() { return 'Hi!'; };

Стрелочная функция (Arrow Function) - компактный синтаксис без собственного this, arguments, не может быть конструктором:

javascript
const sayHi = () => 'Hi!';

Ключевые отличия:

  1. Hoisting (только Declaration)
  2. Контекст this (у стрелочных берется из внешней области)
  3. Возможность использования как конструктор (стрелочные нельзя)
  4. Наличие arguments (нет у стрелочных)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы