Вопрос проверяет понимание контекста выполнения функций и особенностей стрелочных функций.
Стрелочные функции не создают собственный this, потому что они берут его из внешней лексической области видимости. Такое поведение делает их предсказуемыми и избавляет от необходимости использовать bind. Это было сделано специально для упрощения работы с колбэками. Контекст определяется в момент создания функции. Изменить его невозможно.
Стрелочные функции были добавлены в JavaScript для упрощения работы с функциями и контекстом.
Отсутствие собственного контекста
Стрелочная функция не создаёт:
this
arguments
super
Лексическое связывание this
Значение this берётся из внешнего лексического окружения.
Фиксация при создании
Контекст определяется в момент объявления функции, а не вызова.
function Timer() {
this.seconds = 0
setInterval(() => {
this.seconds++
}, 1000)
}
Здесь стрелочная функция использует this из Timer, а не из setInterval.
нельзя использовать call, apply, bind
удобно для обработчиков и колбэков
не подходит для методов объектов
Стрелочные функции используют лексический this, что делает их поведение стабильным и удобным в асинхронном коде.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию