通过JS中的引用进行复制 - 为什么此代码的输出为17?

时间:2017-10-05 13:25:34

标签: javascript ecmascript-6

var obj = { arr: [{ x: 17 }] }; 
var z = obj.arr;
z = [{ x: 25 }]; 
console.log(obj.arr[0].x);

控制台打印出17可以有人解释我怎么样? 根据我的知识,z引用了obj.arr并重新初始化z,控制台应该打印出25

1 个答案:

答案 0 :(得分:2)

声明

z = [{ x: 25 }];

将替换z的先前值。那时,z已经不再与“obj”有任何关系了。

如果您想通过obj更改z,则需要类似

的内容
z[0].x = 25;