Переназначение переменной само по себе почти никогда не будет иметь никакого эффекта в другом месте. Если вы передадите переменную в качестве параметра, затем переназначите эту переменную, и функция завершится, ничего за пределами функции не увидит никаких изменений. Точно так же:
let someVar = 'foo';
function reassign(str) {
str = 'bar';
}
reassign(someVar);
console.log(someVar);
Переназначение внутри функции выше ничего не делает, потому что переназначение не меняет то, на что указывает внешнее связывание someVar
.
Ваш второй фрагмент:
reInitializeState(state, action) {
Object.assign(state, initialState);
state.someProperty = true; // this does
},
Здесь вы изменяете исходный объект state
, который был передан в качестве параметра, поэтому изменение видно за пределами функции. В другом фрагменте вы изменяете совершенно новый объект , объект, который нельзя увидеть в другом месте скрипта, и продолжаете собирать мусор.