Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: pass by reference, object mutation, variable reassignment, function scope

Что происходит при переприсваивании объекта внутри функции?

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

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

Объекты в 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

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

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

#pass by reference

#object mutation

#variable reassignment

#function scope

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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