为什么howdothisvargetchanged解析为changevar后会得到不同的值?
当变量仅在范围之外存在时,如何通过函数进行更改?

(function()
{
var howdoesthisvargetchanged = {'a': 'a', 'B': 'B', 'C': 'C'};
console.log(JSON.stringify(howdoesthisvargetchanged));
changevar(howdoesthisvargetchanged);
console.log(JSON.stringify(howdoesthisvargetchanged));
function changevar(v)
{
  v['C'] = 'why does this work?';
}
})();

最佳答案

之所以有效,是因为您通过引用howdoesthisvargetchanged传递了changevar()。如果尝试在changevar()中重新分配变量,则外部不会发生任何事情。但是,由于我们引用了现有对象,因此我们要对该实例进行操作。我们对该对象的属性所做的任何更改都会反映到访问该对象的其他任何对象上。

09-25 18:31