Проверяет понимание передачи объектов по ссылке в 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
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию