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完全是。您刚刚更新了该参数的值,因此原始值(对象引用的副本)将被覆盖。