Как ведёт себя конструктор при отсутствии переданных аргументов

Создастся объект с собственным свойством a, равным undefined. Отсутствующий аргумент не запрещает вызов конструктора и сам по себе не вызывает ошибку.

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

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

Создастся объект с собственным свойством a, равным undefined. Отсутствующий аргумент не запрещает вызов конструктора и сам по себе не вызывает ошибку.

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

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

Условие

Что будет результатом создания экземпляра, если при вызове конструктора не указываются параметры, а в самом конструкторе объявлен параметр?

function Test(a) {
    this.a = a;
}

const obj = new Test();

Ответ

Создастся объект с собственным свойством a, равным undefined. Отсутствующий аргумент не запрещает вызов конструктора и сам по себе не вызывает ошибку.

console.log(obj.a); // undefined
console.log(Object.hasOwn(obj, 'a')); // true
console.log(obj instanceof Test); // true

new создаёт экземпляр, связывает его прототип с Test.prototype и вызывает Test с this этого экземпляра. Параметр a получает undefined, после чего присваивание создаёт свойство. Это отличается от полного отсутствия свойства, хотя обычное чтение в обоих случаях может дать undefined. Для значения по умолчанию можно объявить function Test(a = 0).

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

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

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

Подробнее