[имя] почему изменяется поле `x` объекта при передаче объекта в функцию? Объясните, как меняются ссылки и значения во времени.

Функция получает копию ссылки на объект: изменение obj.x видно через другие ссылки на тот же объект, а переназначение параметра — нет.

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

Что ответить на собеседовании

Функция получает копию ссылки на объект: изменение obj.x видно через другие ссылки на тот же объект, а переназначение параметра — нет.

Подробный разбор

Ответ с пояснениями

Функция получает копию ссылки на объект: изменение obj.x видно через другие ссылки на тот же объект, а переназначение параметра — нет.

const original = { x: 1 };
function change(obj) {
  obj.x = 2;       // Меняется общий объект.
  obj = { x: 3 };  // Меняется только локальный параметр.
}
change(original);
console.log(original.x); // 2

Такое поведение не означает передачу самой переменной original по ссылке. Значение ссылки копируется, и сначала обе переменные указывают на один объект. Без исходного примера можно объяснить этот принцип, но не порядок его конкретных строк.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее