Проверяет понимание механизма передачи объектов по ссылке в JavaScript и его отличия от передачи по значению.
В JavaScript существует два способа передачи данных: по значению (для примитивов) и по ссылке (для объектов). Когда вы передаете объект в функцию или присваиваете его другой переменной, копируется не сам объект, а ссылка на него в памяти. Это означает, что обе переменные указывают на один и тот же объект.
const user = { name: 'Alice' };
function updateName(obj) {
obj.name = 'Bob';
}
updateName(user);
console.log(user.name); // 'Bob'В этом примере функция updateName изменяет свойство объекта, переданного по ссылке, что отражается на исходном объекте user.
Примитивы (числа, строки, булевы значения) передаются по значению. Изменение параметра внутри функции не влияет на внешнюю переменную:
let age = 25;
function changeAge(a) {
a = 30;
}
changeAge(age);
console.log(age); // 25Чтобы не изменять исходный объект, можно создать его копию с помощью Object.assign() или оператора spread:
const original = { x: 1, y: 2 };
const copy = { ...original };
copy.x = 10;
console.log(original.x); // 1Для глубоких объектов (с вложенными объектами) требуется глубокое копирование, например, через JSON.parse(JSON.stringify(obj)) или библиотеки.
Понимание передачи по ссылке критично для управления состоянием в приложениях, особенно при работе с React, Redux или любыми структурами данных, где мутации могут привести к багам. Используйте копирование объектов, когда нужно избежать побочных эффектов.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию