Что будет выведено в консоль (пример 35)

Будет выведено Maxim один раз. Вызов myObj.greet() получает this равный myObj, а присваивание const fn = myObj.greet функцию не вызывает.

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

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

Будет выведено Maxim один раз. Вызов myObj.greet() получает this равный myObj, а присваивание const fn = myObj.greet функцию не вызывает.

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

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

Условие

Определите, какой вывод появится в консоли при выполнении следующего JavaScript‑кода:

 const myObj = {
    name: 'Maxim',
    greet() {
    console.log(this.name)
    }
};

myObj.greet();

const fn = myObj.greet

Ответ

Будет выведено Maxim один раз. Вызов myObj.greet() получает this равный myObj, а присваивание const fn = myObj.greet функцию не вызывает.

Потеря контекста стала бы заметна только при последующем fn(), которого здесь нет. Не нужно добавлять к результату undefined или ошибку за отсутствующий вызов. Для передачи функции отдельно можно использовать bind(myObj).

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

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

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

Подробнее