fn.call(this) передаёт текущее внешнее this явно; результат зависит от того, чему оно равно и является ли сама fn строгой.
Чему будет равен this внутри функции, если вызвать её через fn.call(this) в браузере — в обычном режиме и в strict mode?
fn.call(this) передаёт текущее внешнее this явно; результат зависит от того, чему оно равно и является ли сама fn строгой.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
fn.call(this) передаёт текущее внешнее this явно; результат зависит от того, чему оно равно и является ли сама fn строгой.
В верхнем уровне обычного браузерного script this обычно равно window даже при директиве strict, в ES-модуле — undefined. Строгая обычная fn сохраняет переданное значение, нестрогая заменяет null/undefined глобальным объектом. Стрелка игнорирует переданный this и использует лексический.