var result = {};
result.node_data = [];
{
result.link_total = 0;
result.link_start_seq = 2;
{
for (let i = 0; i < 2; i++) {
var one_data = {};
one_data.mac_addr = 1*i;
one_data.tei = 2*i;
console.log(one_data);
result.node_data.push(one_data);
}
}
}
console.log(result);
{ mac_addr: 0, tei: 0 }
{ mac_addr: 1, tei: 2 }
{
node_data: [ { mac_addr: 0, tei: 0 }, { mac_addr: 1, tei: 2 } ],
link_total: 0,
link_start_seq: 2
}
var result = {};
var one_data = {};
result.node_data = [];
{
result.link_total = 0;
result.link_start_seq = 2;
{
for (let i = 0; i < 2; i++) {
one_data.mac_addr = 1*i;
one_data.tei = 2*i;
console.log(one_data);
result.node_data.push(one_data);
}
}
}
console.log(result);
{ mac_addr: 0, tei: 0 }
{ mac_addr: 1, tei: 2 }
{
node_data: [ { mac_addr: 1, tei: 2 }, { mac_addr: 1, tei: 2 } ],
link_total: 0,
link_start_seq: 2
}
因为Object对象是地址引用传递的,one_data对象在循环外声明时,每次result.node_data.push(one_data)添加的one_data都是同一个对象。就是说result.node_data[0],result.node_data[1],result.node_data[2]中存放的都是同一个对象的引用地址,在修改这个对象的属性后,所有存放这个对象引用的地方都会受到影响。
https://bbs.csdn.net/topics/391988383