Что выведет извлечённый метод с глобальным fullname

В указанных условиях выводятся Анна и Глобальное имя. Извлечённая непривязанная функция вызывается с глобальным this в нестрогом режиме.

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

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

В указанных условиях выводятся Анна и Глобальное имя. Извлечённая непривязанная функция вызывается с глобальным this в нестрогом режиме.

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

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

Условие

Код выполняется в браузере как обычный классический script, не module, без strict mode:

var fullname = 'Глобальное имя';
var user = { fullname: 'Анна', read: function () { return this.fullname; } };
console.log(user.read());
var read = user.read;
console.log(read());

Определите вывод.

Ответ

В указанных условиях выводятся Анна и Глобальное имя. Извлечённая непривязанная функция вызывается с глобальным this в нестрогом режиме.

Важно оговорить среду: top-level var классического браузерного script связан с глобальным объектом. В ES-модуле или строгой функции обычный вызов не получает такой this, и обращение к this.fullname может выбросить исключение. Для устойчивого поведения независимо от места вызова используйте user.read.bind(user).

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

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

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

Подробнее