Определить вывод в консоль (пример 38)

GetDiameter выведет 20. Стрелочный getPerimeter не получает this объекта circle, поэтому второй результат зависит от внешнего this, а не от circle.r.

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

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

GetDiameter выведет 20. Стрелочный getPerimeter не получает this объекта circle, поэтому второй результат зависит от внешнего this, а не от circle.r.

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

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

Условие

Нужно предсказать, что выведет следующий JavaScript‑код.

 const circle = {
    r: 10,
    getDiameter() {
        return this.r * 2;
    },
    getPerimeter: () => 2 * Math.PI * this.r
};

console.log(circle.getDiameter());
console.log(circle.getPerimeter());

Ответ

GetDiameter выведет 20. Стрелочный getPerimeter не получает this объекта circle, поэтому второй результат зависит от внешнего this, а не от circle.r.

В обычном браузерном script без глобального r получится NaN. В ES-модуле верхнеуровневый this равен undefined, поэтому обращение к this.r вызовет TypeError. Для ожидаемого периметра определите обычный метод getPerimeter() { return 2 * Math.PI * this.r; }.

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

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

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

Подробнее