Случайно неизменный Javascript объект? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть следующий фрагмент кода, скрытый глубоко внутри сложной функции:

                 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. Но мне нужно изменить результат, а я сейчас не могу!

...