Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: pass by reference, pass by value, object, mutation, reference

Как работает передача объектов по ссылке?

Проверяет понимание механизма передачи объектов по ссылке в JavaScript и его отличия от передачи по значению.

Короткий ответ

В 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

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#pass by reference

#pass by value

#object

#mutation

#reference

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию