Назад к вопросам
Middle
88
questionbank

Что произойдет, если вызвать `this` в стрелочной функции?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

В стрелочной функции this лексически связан. Это означает, что this будет указывать на контекст выполнения, в котором стрелочная функция была определена, а не на контекст, в котором она вызвана.

Пример:

const obj = {
  name: 'Объект',
  method: function() {
    // this здесь указывает на obj
    const arrowMethod = () => {
      // this здесь также указывает на obj,
      // так как стрелочная функция определена внутри method
      console.log(this.name);
    };
    arrowMethod();
  },
  anotherMethod: () => {
    // this здесь указывает на глобальный объект (window в браузере)
    // так как стрелочная функция определена на верхнем уровне в obj
    console.log(this);
  }
};

obj.method(); // Выведет "Объект"
obj.anotherMethod(); // Выведет Window (в браузере)

Сравнение с обычными функциями:

В обычных функциях значение this определяется способом вызова функции (например, с использованием call, apply, bind, или как метод объекта).

const regularFunction = function() {
  console.log(this);
};

const context = { value: 42 };

regularFunction(); // this указывает на глобальный объект (window/globalThis)
regularFunction.call(context); // this указывает на context

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