> Какие есть способы объявления функций в JavaScript и их особенности (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Иннотех, YADRO, Kvando Technologies, IT-One, GoInvest, ООО Рокет Тех, TYMY, SmartWay

Стек: JavaScript

> Пример ответа

В JavaScript существует несколько способов объявления функций, каждый со своими особенностями:

  1. Function Declaration (объявление функции)
JAVASCRIPT
function sum(a, b) {
return a + b;
}
  • Поднимается (hoisting) целиком - можно вызвать до объявления.

  • Имеет собственный контекст this (зависит от вызова).

  • Доступна в пределах блока (в строгом режиме) или всей функции.

  1. Function Expression (функциональное выражение)
JAVASCRIPT
const sum = function(a, b) {
return a + b;
};
  • Не поднимается - доступна только после присвоения.

  • Может быть анонимной или именованной (для отладки).

  • this определяется контекстом вызова.

  1. Arrow Function (стрелочная функция)
JAVASCRIPT
const sum = (a, b) => a + b;
  • Не имеет собственного this - наследует из внешнего лексического окружения.

  • Не поднимается.

  • Не имеет arguments (используйте rest-параметры).

  • Не может быть использована как конструктор (без new).

  • Компактный синтаксис, особенно для колбэков.

  1. Метод объекта (сокращённая запись)
JAVASCRIPT
const obj = {
sum(a, b) {
return a + b;
}
};
  • Синтаксический сахар для sum: function(a, b).

  • this указывает на объект, в котором определён метод.

  1. Конструктор с new Function
JAVASCRIPT
const sum = new Function('a', 'b', 'return a + b');
  • Создаётся динамически из строки (опасно, медленно).

  • Не замыкается на внешнюю область видимости - работает в глобальном контексте.

Ключевые различия: hoisting, привязка this, наличие arguments, возможность использования как конструктора. Для колбэков и функционального стиля предпочтительны стрелочные функции, для методов объектов - сокращённая запись, для обычных функций - Function Declaration из-за hoisting.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью