Проверяет понимание передачи объектов по ссылке в JavaScript и мутации объектов внутри функций.
В JavaScript объекты (и массивы) относятся к ссылочным типам данных. Когда вы передаете объект в функцию, вы передаете не его копию, а ссылку на ту же область памяти. Поэтому любые изменения свойств объекта внутри функции напрямую затрагивают исходный объект.
function updateName(user) {
user.name = 'Alice';
}
const person = { name: 'Bob' };
updateName(person);
console.log(person.name); // 'Alice'В этом примере функция updateName изменяет свойство name переданного объекта. После вызова функции исходный объект person также изменился.
Чтобы не изменять исходный объект, можно создать его копию внутри функции, например, с помощью Object.assign() или оператора spread (...).
function updateNameSafe(user) {
return { ...user, name: 'Alice' };
}
const person = { name: 'Bob' };
const updatedPerson = updateNameSafe(person);
console.log(person.name); // 'Bob'
console.log(updatedPerson.name); // 'Alice'Понимание передачи объектов по ссылке важно для предотвращения нежелательных побочных эффектов в коде. Если функция должна изменять объект, лучше возвращать новый объект, а не мутировать исходный. Это особенно актуально в функциональном программировании и при работе с состоянием в React.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию