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

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

Функции

Функции создают через Function Declaration, Function Expression, стрелочные функции, а также методы, конструкторы, генераторы и `new Function`. Выбор зависит от this, hoisting и назначения.

Способы

Function Declaration

function sum(a, b) { return a + b; }

Всплывает целиком, свой this, есть arguments.

Function Expression

const sum = function (a, b) { return a + b; };

Привязана к переменной, до инициализации недоступна.

Стрелочная функция

const sum = (a, b) => a + b;

Нет своего this/arguments, не конструктор, компактна.

Метод объекта/класса

const obj = { sum(a, b) { return a + b; } };

Конструктор (с new), генератор (function*), async

Создают экземпляры / итераторы / промисы соответственно.

Как выбирать

  • Колбэк с сохранением this → стрелка.
  • Метод с динамическим this, доступность до объявления → Declaration/метод.
  • Условное присваивание, IIFE → Expression.
  • Ленивая последовательность → генератор; асинхронность → async.

Избегать new Function — компилирует строку, как eval (небезопасно).

Коротко для собеседования

Способы создания функций: Declaration (всплывает, свой this), Expression (привязана к переменной), стрелка (лексический this, компактна), метод, конструктор, генератор, async. Стрелки — для колбэков, Declaration/методы — где нужен динамический this.

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