Создастся объект с собственным свойством 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).