Функция получает копию ссылки на объект: изменение obj.x видно через другие ссылки на тот же объект, а переназначение параметра — нет.
[имя] почему изменяется поле `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 по ссылке. Значение ссылки копируется, и сначала обе переменные указывают на один объект. Без исходного примера можно объяснить этот принцип, но не порядок его конкретных строк.