Javascript 基本JS-为什么这个obj没有变为未定义?

Javascript 基本JS-为什么这个obj没有变为未定义?,javascript,object,reference,Javascript,Object,Reference,在下面的代码中,我理解为什么person.name更改为“john”,但我不完全理解为什么person没有根据下一行的obj=undefined在内存中引用未定义的 var person = { name: "wtf" }; function doStuff(obj) { obj.name = "john"; obj = undefined; } doStuff(person); person.name现在等于john和person仍然引用或“指向”对象,而不是“指向”内存中的

在下面的代码中,我理解为什么
person.name
更改为
“john”
,但我不完全理解为什么
person
没有根据下一行的
obj=undefined
在内存中引用
未定义的

var person = { name: "wtf" };

function doStuff(obj) {
  obj.name = "john";
  obj = undefined;
  }

doStuff(person);

person.name
现在等于
john
person
仍然引用或“指向”对象,而不是“指向”内存中的任何内容,即未定义。我可以继续我的学习,并简单地依靠它以这种方式工作,但我永远无法清楚地说明它为什么以这种方式工作。

函数中的
obj
参数在函数调用中被传递到
person
的引用

doStuff(person);

参数值是存储在
person
中的对象引用的副本。因此,当您给
obj
变量一个新值时,这对
person

可能的重复项也没有影响:要清楚,您可以说参数值(它是一个副本)现在只是引用了其他内容?在本例中,未定义。@colbisaurusrex完全是。您刚刚更新了该参数的值,因此原始值(对象引用的副本)将被覆盖。