我试图理解JavaScript中变量和对象的传递,看到了这个页面。
其中解释说JavaScript对象是按值传递的,但该值本身是一个引用。虽然我理解了该页面上给出的示例中发生的情况,但我仍然不明白为什么会这样。请问有人能够解释一下“值本身是一个引用”是什么意思吗?
其中解释说JavaScript对象是按值传递的,但该值本身是一个引用。虽然我理解了该页面上给出的示例中发生的情况,但我仍然不明白为什么会这样。请问有人能够解释一下“值本身是一个引用”是什么意思吗?
function changeObj(someObj) {
someObj.a = 1000;
someObj.c = "test";
someObj = { "x" : 5 };
console.log(someObj); // { "x" : 5 }
}
var o = { "a" : 1, "b" : 2 };
changeObj(o);
console.log(o); // { "a" : 1000, "b" : 2, "c" : "test" }
o
,它引用具有a
和b
属性的对象。然后调用函数changeObj
并传入o
。函数更改a
属性的值并创建一个新的c
属性 - 函数修改与变量o
引用相同的对象,因为它具有对该对象的引用。但是,然后该函数将someObj
分配为完全新的对象。这不会影响o
,因为该函数只有对o
指向的对象的引用,而没有访问o
变量本身。