Проверяет понимание работы с ссылочными типами данных в JavaScript и поведения переменных при переприсваивании.
В JavaScript объекты хранятся в памяти по ссылке, а не по значению. Когда вы присваиваете объект переменной, переменная хранит не сам объект, а ссылку на область памяти, где объект находится. При переприсваивании переменной новой ссылке (например, другому объекту или примитиву) старая ссылка теряется, но сам объект остается в памяти до тех пор, пока на него есть хотя бы одна ссылка из другой переменной или структуры данных.
let obj1 = { name: 'Alice' };
let obj2 = obj1; // obj2 ссылается на тот же объект
obj1 = { name: 'Bob' }; // obj1 теперь ссылается на новый объект
console.log(obj2.name); // 'Alice' — obj2 все еще указывает на старый объект
console.log(obj1.name); // 'Bob' — obj1 указывает на новый объектВ этом примере после переприсваивания obj1 старый объект { name: 'Alice' } продолжает существовать, потому что на него ссылается obj2. Если бы obj2 также был переприсвоен или удален, объект стал бы недоступным и был бы удален сборщиком мусора.
Понимание ссылочного поведения критично при работе с мутабельными данными, копировании объектов, передаче аргументов в функции и управлении памятью. Это основа для избежания побочных эффектов и неожиданного изменения данных.
Переприсваивание переменной меняет только ее ссылку, не затрагивая исходный объект. Это важно учитывать при проектировании архитектуры приложения, особенно при работе с состоянием и иммутабельными структурами данных.