Sobes.tech
Back to questions
Junior — Middle
88

Чем отличается применение this в стрелочной функции от обычной функции в JavaScript?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

В JavaScript ключевое отличие использования this в стрелочных функциях и обычных функциях заключается в том, как определяется контекст вызова:

  • Обычные функции: this зависит от того, как функция была вызвана. Например, если функция вызвана как метод объекта, this указывает на этот объект. Если функция вызвана просто, this может быть undefined (в строгом режиме) или глобальным объектом (в нестрогом).

  • Стрелочные функции: не имеют собственного this. Вместо этого они захватывают this из окружающего лексического контекста, то есть this внутри стрелочной функции — это то же значение, что и снаружи неё.

Пример:

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 из внешней области, например, внутри колбэков.