这是我的 Javascript 代码:
var subRow = [];
var rowarr = [];
subRow.push({ v: "Jay" });
subRow.push({ v: "Ram" });
rowarr.push({ c: subRow });
subRow.length = 0;
subRow.push({ v: "Jay1" });
subRow.push({ v: "Ram1" });
rowarr.push({ c: subRow });
console.log(JSON.stringify(rowarr));
输出是:
[{
"c": [{
"v": "Jay1"
}, {
"v": "Ram1"
}]
}, {
"c": [{
"v": "Jay1"
}, {
"v": "Ram1"
}]
}]
预期的输出是:
[{
"c": [{
"v": "Jay"
}, {
"v": "Ram"
}]
}, {
"c": [{
"v": "Jay1"
}, {
"v": "Ram1"
}]
}]
谁能解释一下为什么会这样?
最佳答案
数组通过引用处理。
subRow.length = 0;
删除数组的内容。
rowarr
然后包含两个指向同一个数组的指针(其中只有清空后放入其中的内容)
将 subRow.length = 0;
更改为 subRow = []
以处理新数组而不是修改现有数组。
关于javascript - 谁能解释以下 Javascript 代码行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17463526/