> Почему новый объект не изменяет исходный объект при передаче в функцию в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: IT-One, EdenAI, Яндекс
Стек: JavaScript
> Пример ответа
В JavaScript объекты передаются по ссылке, но сама ссылка передаётся по значению. Когда вы передаёте объект в функцию, вы передаёте копию ссылки на этот объект, а не сам объект. Если внутри функции вы создаёте новый объект и присваиваете его параметру, вы меняете только локальную копию ссылки, не затрагивая исходный объект.
Пример:
JAVASCRIPTfunction changeObj(obj) {obj = { newProp: 'value' }; // создаётся новый объект, локальная ссылка перезаписывается}let original = { prop: 'old' };changeObj(original);console.log(original); // { prop: 'old' } - исходный объект не изменился
Если же вы мутируете свойства переданного объекта (например, obj.prop = 'new'), изменения отразятся на исходном объекте, потому что обе ссылки указывают на одну и ту же область памяти. Но создание нового объекта внутри функции разрывает эту связь.
> Похожие задачи по frontend
Как сравнить массивы аргументов для кеширования в функции memo в JavaScript
Можно ли сравнить два объекта в JavaScript и как это сделать
Как работает конструктор Promise, синхронность создания и асинхронность резолва в JavaScript
Что такое метод map в JavaScript и как он работает
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью