> Почему this равен undefined у стрелочной функции, созданной в области видимости const в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: DigitalSail
Стек: JavaScript
> Пример ответа
Стрелочные функции в JavaScript не имеют собственного контекста this. Вместо этого они наследуют this из окружающей лексической области видимости (то есть из того места, где функция была объявлена). Если стрелочная функция создана внутри блока const (например, на верхнем уровне модуля или внутри функции, где this не определён), то this будет равен undefined в строгом режиме ("use strict"), который автоматически включён в ES-модулях и классах.
Пример:
JAVASCRIPTconst obj = {name: 'test',regularFunc: function() {const arrow = () => console.log(this); // this = objarrow();},arrowFunc: () => console.log(this) // this = undefined (в модуле)};obj.regularFunc(); // { name: 'test', ... }obj.arrowFunc(); // undefined
В методе arrowFunc стрелочная функция захватывает this из внешней области - глобального контекста модуля, где this равен undefined (в строгом режиме). В отличие от обычной функции, которая получает this динамически при вызове, стрелочная фиксирует его один раз при создании.
> Похожие задачи по frontend
Влияет ли добавление async/await на порядок вывода в консоли?
Зачем на обертке модального окна навешивать id и проверять таргет клика для закрытия модалки
Как catch влияет на цепочку промисов в JavaScript
Как отсутствие собственного this у стрелочной функции влияет на вызов методов в JavaScript?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью