У меня есть следующий фрагмент кода, скрытый глубоко внутри сложной функции:
result = {
...result,
mp_mods: {
...result.mp_mods,
Untyped: {
...result.mp_mods.Untyped,
[kitObj.id]: {
num: 2,
level
}
}
}
};
let newVar = {
...result,
mp_mods: {
...result.mp_mods,
Untyped: {
...result.mp_mods.Untyped,
[kitObj.id]: {
num: 2,
level
}
}
}
};
console.log(result.mp_mods);
console.log(newVar.mp_mods);
Эти два файла console.logs дают разные результаты. newVar выглядит так, как я хочу, в то время как результат все еще выглядит так же, как и до того, как я попытался присвоить ему новое значение. Он кажется (нежелательно) неизменным из-за ... какого-то сложного правила области видимости или чего-то еще?
результат был первоначально объявлен с помощью let, а не const, так что это не причина. (Очень жаль, что это сгенерировало бы четкое сообщение об ошибке и было бы легко исправить.)
Может кто-нибудь объяснить, что здесь происходит? Должно быть что-то в моем коде, предшествующем этому фрагменту, который проблематичен c. Но мне нужно изменить результат, а я сейчас не могу!