Javascript中传递的是对象的引用。这意味着该对象从任何地方发生的更改都应该被反映出来。 在这种情况下,console.log(a)的期望输出结果是 {}。
function change(a,b) {
a.x = 'added';
a = b;//assigning a as {} to b
}
a={}
b={}
change(a,b);
console.log(a); //expected {} but output {x:'added'}
console.log(b)
这里发生了什么?据我所知,这不应该是由于函数作用域而引起的。 谢谢
b
赋值给a
没有任何效果,因为函数作用域中的a
是一个不同的变量,而不是全局作用域中的a
。 - GOTO 0foo
和bar
,那么可能更容易理解它的工作方式。 - Brandon