Вопрос проверяет понимание передачи объектов по ссылке в JavaScript и связанных с этим побочных эффектов.
В JavaScript объекты (включая массивы и функции) передаются по ссылке, а не по значению. Это означает, что при присваивании или передаче в функцию копируется не сам объект, а ссылка на него. Изменение объекта через одну ссылку влияет на все остальные ссылки, указывающие на тот же объект.
const user = { name: 'Alice', age: 25 };
function updateAge(person) {
person.age = 30; // Мутация оригинала
}
updateAge(user);
console.log(user.age); // 30 — оригинал изменён
// Как избежать: создаём копию
function safeUpdateAge(person) {
return { ...person, age: 30 };
}
const updatedUser = safeUpdateAge(user);
console.log(user.age); // 25 — оригинал не тронутПонимание передачи по ссылке критично для написания надёжного кода. Используйте иммутабельные подходы (spread-оператор, Object.assign, библиотеки вроде Immer) для предотвращения побочных эффектов, особенно в функциональном программировании и управлении состоянием.