GetDiameter выведет 20. Стрелочный getPerimeter не получает this объекта circle, поэтому второй результат зависит от внешнего this, а не от circle.r.
Определить вывод в консоль (пример 38)
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; }.