Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: primitive, return, constructor

Что произойдёт, если в функции-конструкторе вернуть примитив?

Этот вопрос проверяет понимание того, как JavaScript обрабатывает возврат примитивных значений из функций-конструкторов.

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

Если функция-конструктор возвращает примитивное значение (число, строку, boolean, null, undefined, символ), это возвращаемое значение игнорируется. В результате все равно возвращается вновь созданный объект, на который ссылается this. Механизм new переопределяет возврат примитивов.

Длинный ответ

Возврат примитивных значений из конструктора

Когда функция-конструктор возвращает примитивное значение, это не влияет на результат создания объекта.

Игнорирование примитивных возвращаемых значений

Все примитивные типы игнорируются:

javascript

function Person(name) {
  this.name = name;
  
  // Все эти возвраты будут проигнорированы
  return 42;                    // число
  return 'строка';              // строка
  return true;                  // boolean
  return null;                  // null
  return undefined;             // undefined
  return Symbol('символ');      // символ
}

const person = new Person('Иван');
console.log(person.name); // "Иван" - объект создан
console.log(person instanceof Person); // true

Практические примеры

Рассмотрим различные сценарии с возвратом примитивов:

javascript

// Пример 1: Возврат числа
function Car(brand) {
  this.brand = brand;
  return 100; // Игнорируется
}

const car = new Car('Toyota');
console.log(car.brand); // "Toyota"
console.log(car); // Car { brand: "Toyota" }

// Пример 2: Возврат undefined (явный и неявный)
function Bike(model) {
  this.model = model;
  // Неявный возврат undefined - объект создается
}

function Boat(name) {
  this.name = name;
  return undefined; // Явный возврат - также игнорируется
}

const bike = new Bike('Yamaha');
const boat = new Boat('Ладья');
console.log(bike instanceof Bike); // true
console.log(boat instanceof Boat); // true

Сравнение с возвратом объекта

В отличие от примитивов, возврат объекта изменяет результат:

javascript

function TestPrimitive() {
  this.value = 'original';
  return 123; // Примитив - игнорируется
}

function TestObject() {
  this.value = 'original';
  return { value: 'custom' }; // Объект - заменяет результат
}

const test1 = new TestPrimitive();
const test2 = new TestObject();

console.log(test1.value); // "original"
console.log(test2.value); // "custom"

Почему примитивы игнорируются

Механизм оператора new специально игнорирует примитивные возвращаемые значения чтобы:

  • Сохранять консистентность создания объектов

  • Предотвращать случайные ошибки

  • Обеспечивать ожидаемое поведение конструкторов

Вывод: Возврат примитивных значений из функции-конструктора игнорируется - всегда возвращается объект, созданный оператором new. Это поведение гарантирует, что конструкторы всегда возвращают экземпляры объектов.

Уровень

  • Рейтинг:

    3

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#primitive

#return

#constructor

Подпишись на React Developer в телеграм