Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: pass by reference, pass by value, object mutation, variable reassignment

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

Проверяет понимание передачи объектов по ссылке в JavaScript и поведения при переприсваивании параметра внутри функции.

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

В JavaScript объекты передаются по ссылке, но сама ссылка передается по значению. Если внутри функции локальному параметру присвоить новый объект, это не повлияет на исходную переменную вне функции. Исходный объект останется неизменным, а параметр будет указывать на новый объект только внутри функции.

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

Как работает передача объектов в JavaScript

В JavaScript объекты передаются в функцию по ссылке, но сама ссылка (указатель на объект) передается по значению. Это означает, что внутри функции параметр получает копию ссылки на исходный объект. Если вы изменяете свойства объекта через эту ссылку, изменения отражаются на исходном объекте. Однако если вы полностью переприсваиваете параметру новый объект, вы меняете только локальную копию ссылки, а исходная переменная остается неизменной.

Пример кода

function updateObject(obj) {
  obj.name = 'Новое имя'; // Изменение свойства — влияет на исходный объект
  obj = { name: 'Совсем новый объект' }; // Переприсваивание — не влияет
  console.log(obj.name); // 'Совсем новый объект'
}

const myObj = { name: 'Старый объект' };
updateObject(myObj);
console.log(myObj.name); // 'Новое имя' — свойство изменилось, но сам объект не заменился

Почему так происходит

Когда вы передаете объект в функцию, JavaScript создает копию ссылки на этот объект в локальной переменной параметра. Операция присваивания нового значения параметру разрывает связь с исходной ссылкой, и теперь локальная переменная указывает на другой объект в памяти. Исходная переменная продолжает ссылаться на старый объект.

Вывод

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

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

#pass by reference

#pass by value

#object mutation

#variable reassignment

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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