Сравни способы объявления функции и объясни, когда выбирать каждый вариант.
Функции
Функцию объявляют через Function Declaration, Function Expression или стрелочную функцию. Выбор зависит от hoisting, потребности в this и стиля.
Способы
Function Declaration
function sum(a, b) {
return a + b;
}Всплывает целиком (доступна до объявления), свой this, есть arguments и prototype.
Function Expression
const sum = function (a, b) {
return a + b;
};Привязана к переменной, до инициализации недоступна, свой this.
Стрелочная функция
const sum = (a, b) => a + b;Нет своего this (берёт из окружения), нет arguments, не конструктор, компактна.
Как выбирать
- Нужна доступность до объявления или метод с динамическим
this→ Declaration. - Колбэк, где важно сохранить внешний
this→ стрелка. - Условное присваивание функции, IIFE → Expression.
- Методы объектов, где нужен свой
this→ Declaration/сокращённый метод, не стрелка.
Коротко для собеседования
Способы: Declaration (всплывает, свой this), Expression (привязана к переменной), стрелка (нет своего this/arguments, компактна). Стрелки — для колбэков, Declaration — для методов и утилит с динамическим this.