> Почему новый объект не изменяет исходный объект при передаче в функцию в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: IT-One, EdenAI, Яндекс

Стек: JavaScript

> Пример ответа

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

Пример:

JAVASCRIPT
function changeObj(obj) {
obj = { newProp: 'value' }; // создаётся новый объект, локальная ссылка перезаписывается
}
let original = { prop: 'old' };
changeObj(original);
console.log(original); // { prop: 'old' } - исходный объект не изменился

Если же вы мутируете свойства переданного объекта (например, obj.prop = 'new'), изменения отразятся на исходном объекте, потому что обе ссылки указывают на одну и ту же область памяти. Но создание нового объекта внутри функции разрывает эту связь.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью