Проверяет понимание передачи объектов по ссылке в JavaScript и влияния переприсваивания на внешнюю переменную.
В JavaScript объекты передаются по ссылке, но сама ссылка (адрес в памяти) передается по значению. Это означает, что внутри функции вы получаете копию ссылки на тот же объект. Если вы изменяете свойства объекта через эту копию, изменения видны и снаружи. Однако если вы переприсваиваете параметру новый объект, вы меняете только локальную копию ссылки, а внешняя переменная продолжает указывать на старый объект.
function updateObj(obj) {
obj.name = 'new'; // мутация — внешний объект изменится
obj = { name: 'local' }; // переприсваивание — внешний объект не изменится
}
const myObj = { name: 'old' };
updateObj(myObj);
console.log(myObj.name); // 'new'Это поведение важно при работе с функциями, которые модифицируют переданные данные (например, редьюсеры в Redux или обработчики событий). Понимание разницы между мутацией и переприсваиванием помогает избежать неожиданных побочных эффектов.
Используйте мутацию объекта внутри функции, если хотите изменить исходные данные, и избегайте переприсваивания параметра, если нужно сохранить связь с внешней переменной. Для чистоты кода предпочитайте возвращать новый объект вместо мутации.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию