Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про 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. Это поведение гарантирует, что конструкторы всегда возвращают экземпляры объектов.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    3

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

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

#primitive

#return

#constructor

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию