С приближением Хэллоуина я получаю несколько жутких ошибок JS. Это тот, который я не могу обернуть головой и не смог отладить вообще. По сути, я использую Electron, и когда я наблюдаю переменную в процессе рендеринга, это нормально, но когда я вызываю ее в основном процессе, он пропускает целую пару ключ-значение:
function someFunction(someVariable) {
console.log(someVariable)
}
console.log(myVariable) // { key1: value1 }
myVariable.key2 = value2
console.log(myVariable) // { key1: value1, key2: value2 }
someFunction(myVariable) // { key1: value1 }
console.log(myVariable) // { key1: value1, key2: value2 }
У меня естьабсолютно не знаю, как это возможно. С точки зрения источника событий это в основном то же самое, что и вызов обычной функции. Объект предназначен для одноразового использования и на него не ссылаются в других местах, поэтому невозможно изменить его между console.log
и someFunction
.
Перезапуск процесса узла и обновление страницы рендерера не имеют никакого эффекта.
Обновление:
Мне удалось получить временный обходной путь, который работает в течение нескольких минут, прежде чем снова вернуться к описанному выше поведению.
Если яdo:
someFunction(JSON.parse(JSON.stringify(myVariable)))
Только один раз вызовы функций будут волшебным образом работать в течение следующих нескольких минут. Я запутался здесь, так как ничто не должно удалять ключ;более того, переменная объявляется как const
, поэтому не должно быть возможности что-либо напрямую перезаписать ее прошлым значением объекта.