let person = { name: "Lydia" };
const members = [person];
person = null;
console.log(members);
首先我们声明了一个拥有name
属性的对象 person
。
<img src="https://i.imgur.com/TML1MbS.png" width="200">
然后我们又声明了一个变量members
. 将首个元素赋值为变量person
。 当设置两个对象彼此相等时,它们会通过 引用 进行交互。但是当你将引用从一个变量分配至另一个变量时,其实只是执行了一个 复制 操作。(注意一点,他们的引用 并不相同!)
<img src="https://i.imgur.com/FSG5K3F.png" width="300">
接下来我们让person
等于null
。
<img src="https://i.imgur.com/sYjcsMT.png" width="300">
我们没有修改数组第一个元素的值,而只是修改了变量person
的值,因为元素(复制而来)的引用与person
不同。members
的第一个元素仍然保持着对原始对象的引用。当我们输出members
数组时,第一个元素会将引用的对象打印出来。