Sobes.tech
Назад к вопросам
Middle
2

Какие способы объявления функций существуют в JavaScript? Чем отличается function declaration от function expression? Чем стрелочная функция отличается от function declaration?

Компании, где спрашивали
ОТП БанкОТП Банк

Ответ от нейросети

sobes.tech AI

В JavaScript есть несколько способов объявления функций:

  1. Function Declaration (Объявление функции):
function foo() {
  return 'bar';
}

Функция поднимается (hoisted) в начало области видимости, её можно вызвать до объявления.

  1. Function Expression (Функциональное выражение):
const foo = function() {
  return 'bar';
};

Функция создаётся в момент выполнения, не поднимается, вызвать до объявления нельзя.

  1. Arrow Function (Стрелочная функция):
const foo = () => 'bar';

Отличия стрелочной функции от function declaration:

  • Не имеет собственного this, наследует его из внешнего контекста.
  • Не имеет arguments, super, new.target.
  • Не может использоваться как конструктор (нельзя вызвать с new).
  • Более компактный синтаксис.

Таким образом, выбор способа объявления зависит от контекста и требований к поведению функции.