函数改变函数外的变量

时间:2011-12-01 23:08:58

标签: javascript

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

1 个答案:

答案 0 :(得分:2)

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