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