PassFront
  1. PassFront
  2. База знаний
  3. Функции

Сравни способы объявления функции и объясни, когда выбирать каждый вариант.

Функции

Функцию объявляют через 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.

Другие вопросы раздела