Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: call, this, arrow function, context binding, lexical scope

Что происходит с контекстом функции при использовании call с явным указанием объекта — и как это влияет на стрелочные функции внутри неё?

Вопрос проверяет понимание механизма привязки контекста через call и его взаимодействия со стрелочными функциями.

Короткий ответ

Метод call позволяет явно указать значение this для вызываемой функции. При использовании call контекст устанавливается для обычных функций, но стрелочные функции игнорируют call, так как они наследуют this из внешнего лексического окружения. Это означает, что внутри стрелочной функции this будет таким же, как и снаружи, независимо от переданного объекта.

Длинный ответ

Как работает call и контекст this

Метод call позволяет вызвать функцию с явно заданным значением this. Первый аргумент call становится контекстом для функции, а остальные передаются как параметры. Это полезно, когда нужно временно привязать функцию к другому объекту.

Поведение стрелочных функций

Стрелочные функции не имеют собственного this. Они захватывают this из окружающего контекста (лексическая область видимости) во время определения. Поэтому методы call, apply и bind не могут изменить их контекст — переданное значение игнорируется.

Пример кода

const obj = { name: 'Alice' };

function regularFunc() {
  console.log(this.name);
}

const arrowFunc = () => {
  console.log(this.name);
};

regularFunc.call(obj); // 'Alice' — контекст установлен
arrowFunc.call(obj);   // undefined — this остаётся глобальным

Практическое применение

Это важно учитывать при написании обработчиков событий или колбэков. Если внутри обычной функции используется call для передачи контекста, а внутри неё определена стрелочная функция, то стрелочная функция сохранит контекст внешней функции, а не переданный через call.

Вывод

Используйте call для явной привязки контекста к обычным функциям. Для стрелочных функций контекст задаётся только местом их объявления, поэтому call на них не влияет. Это знание помогает избежать ошибок при работе с асинхронным кодом и колбэками.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#call

#this

#arrow function

#context binding

#lexical scope

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию