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

Чем отличается стрелочная функция от функции, объявленной через function?

Компании, где спрашивали
Ifellow

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

sobes.tech AI

Стрелочные функции в JavaScript (и Node.js) отличаются от обычных функций, объявленных через function, несколькими ключевыми моментами:

  1. Лексическое связывание this

    • В стрелочных функциях this берется из внешнего контекста, где функция объявлена.
    • В обычных функциях this зависит от способа вызова.
  2. Отсутствие собственного объекта arguments

    • В стрелочных функциях нет собственного arguments, нужно использовать параметры или rest-параметры.
  3. Нельзя использовать как конструктор

    • Стрелочные функции не могут быть вызваны с new.
  4. Отсутствие prototype

    • У стрелочных функций нет свойства prototype.

Пример:

const obj = {
  value: 42,
  regularFunc: function() { console.log(this.value); },
  arrowFunc: () => { console.log(this.value); }
};

obj.regularFunc(); // 42, this указывает на obj
obj.arrowFunc();   // undefined или значение из внешнего контекста

Таким образом, стрелочные функции удобны для сохранения контекста this, например, в коллбэках, а обычные функции — когда нужен динамический this или возможность использовать конструктор.