Что отобразит console.log в примере №76

c.a() выведет объект c. c.b() вызовет a() без объекта слева от точки, поэтому второй вывод — undefined в strict mode или глобальный объект в нестрогом режиме.

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

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

c.a() выведет объект c. c.b() вызовет a() без объекта слева от точки, поэтому второй вывод — undefined в strict mode или глобальный объект в нестрогом режиме.

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

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

Условие

Укажите, какой результат будет напечатан в консоль при выполнении следующего кода:

 function a () {
    console.log(this);
}

function b () {
    a();
}

const c = {
    a,
    b,
}

c.a();
c.b();

Ответ

c.a() выведет объект c. c.b() вызовет a() без объекта слева от точки, поэтому второй вывод — undefined в strict mode или глобальный объект в нестрогом режиме.

Хотя b вызвана как метод c, её this не передаётся автоматически вложенному обычному вызову a(). Значение this определяется отдельно для каждого вызова функции.

Чтобы второй вызов тоже вывел c, внутри b можно написать a.call(this). Альтернатива — this.a(), если объект гарантированно содержит нужный метод. Это отличается от стрелочной функции, которая собственного this не имеет и берёт его из внешнего окружения.

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

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

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

Подробнее