Чем отличается применение this в стрелочной функции от обычной функции в JavaScript?
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 из внешней области, например, внутри колбэков.