Вопрос проверяет понимание передачи объектов по ссылке в JavaScript, что важно для избежания побочных эффектов при работе с данными.
В JavaScript объекты (включая массивы и функции) передаются по ссылке. Это означает, что когда вы присваиваете объект новой переменной или передаете его в функцию, вы не создаете копию объекта, а копируете ссылку на него в памяти. Таким образом, обе переменные указывают на один и тот же объект.
let obj1 = { name: 'Alice' };
let obj2 = obj1;
obj2.name = 'Bob';
console.log(obj1.name); // 'Bob'В этом примере изменение obj2.name также изменило obj1.name, потому что обе переменные ссылаются на один объект.
function updateName(obj) {
obj.name = 'Charlie';
}
let person = { name: 'David' };
updateName(person);
console.log(person.name); // 'Charlie'Функция updateName получает ссылку на объект person и изменяет его свойство. Это изменение видно и вне функции.
Чтобы избежать нежелательных изменений, можно создать копию объекта. Для поверхностного копирования используйте Object.assign() или спред-оператор:
let original = { a: 1, b: 2 };
let copy = { ...original };
copy.a = 10;
console.log(original.a); // 1Для глубокого копирования (вложенные объекты) используйте JSON.parse(JSON.stringify(obj)) или библиотеки вроде Lodash.
Понимание передачи объектов по ссылке критично для написания предсказуемого кода. Это помогает избежать случайных мутаций данных, особенно при работе с функциями и состоянием приложения. Используйте копирование, когда нужно работать с независимой версией объекта.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию