Примитивы: когда мы создаем переменную примитивного типа, она сохраняется в стеке вызовов (javascript компонент движка, в котором фактически живут переменные) с адресом и значением переменной, пример:
const name = ”John”;
и вот как переменная выглядит в стеке вызовов

что, если есть переменная, которую мы назначаем той же переменной
например: const copyName = name;
copyName = «William»;

Как вы думаете, это повлияет на исходную переменную?
Ну, как вы и сказали, это не повлияет на исходную переменную, потому что каждая из них занимает новый адрес в стеке.

Объекты: когда мы создаем новый объект

постоянный работодатель = {
имя: «Джессика»,
возраст: 31 год,
};

во-первых, он сохраняется в куче с адресом типа F20A и значением {name: 'Jessica', age: 31};< br /> то он присоединяется к стеку с новым адресом, и значение ссылается на тот же адрес в куче (F20A)

поэтому всякий раз, когда мы берем копию исходной переменной следующим образом:
const obj = {name: 'Jessica', age: 31};
const newObj = obj ;
мы буквально берем адрес, а не фактическое значение, поэтому они оба ссылаются на один и тот же адрес, тогда каждое изменение в новой переменной
повлияет на исходную.