В чём разница между тем, где функция объявлена, и тем, где она вызвана, в контексте значения this?

Для обычной функции this обычно определяется формой вызова, а для стрелки — внешним лексическим this в месте её создания.

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

Что ответить на собеседовании

Для обычной функции this обычно определяется формой вызова, а для стрелки — внешним лексическим this в месте её создания.

Подробный разбор

Ответ с пояснениями

Для обычной функции this обычно определяется формой вызова, а для стрелки — внешним лексическим this в месте её создания.

Одна и та же функция при a.fn() и b.fn() может получить разных владельцев. Вызов через отдельную переменную эту связь не сохраняет. call/apply/bind позволяют задать this обычной функции, а new имеет отдельную семантику. У стрелки call и bind не переопределяют захваченный this.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее