这似乎是不可能的,所以我敢肯定我已经错过了一些基本知识。
广泛的背景: 我正在对象a的属性之一(“ oldValue”)中创建并存储字符串值数组。该对象内置于函数Y中,然后传递到函数Z中,其中将a.oldValue的值分配给对象b.oldValue。
function Y() {
let a = {
newValue: newValue, // ex. ["a", "b", "c"]
oldValue: oldValue, // ex. ["c", "a", "b"]
}
Z(a);
}
function Z(args) {
let b = {
newValue: args.newValue, // reliably ["a", "b", "c"]
oldValue: args.oldValue, // inexplicably "null" unless I JSON.stringify(b)
}
这是奇怪的事情发生的地方:B.oldValue以某种方式变为null。输入一个字符串数组,出现空值。除非,如果我JSON.stringify B,则出现预期的字符串数组。
在程序的其余流程中,console.log(b)的哪个位置都没有关系,除非字符串化,否则b.oldValue始终为null,在这种情况下,我会看到正确的数组。贯穿所有这些,a.oldValue / arg.oldValue包含预期的数组。
这是我的控制台,显示对象“ a”和“ b”。请注意不同的oldValues:
怎么了?