函数外部的函数变化变量



为什么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?';
}
})();

它工作,因为你是通过引用changevar()传递howdoesthisvargetchanged。如果您试图在changevar()中重新分配变量,外部将不会发生任何事情。但是,由于我们有一个对现有对象的引用,所以我们对该实例起作用。我们对该对象的属性所做的任何更改都会反映到访问该对象的其他任何东西上。

最新更新