javascript将对象传递到函数中

javascript将对象传递到函数中,javascript,function,object,Javascript,Function,Object,将对象o传递到函数中时发生了什么?第一个函数使o看起来好像没有通过;第二个函数使o看起来好像通过了 var o = {}; (function(x){x=null})(o); //o is NOT null after this statement (function(x){x.foo = "foo"; x.bar = "bar";})(o) //o has properties foo and bar after this statement x指向o,但您只是将x指定为指向

将对象o传递到函数中时发生了什么?第一个函数使o看起来好像没有通过;第二个函数使o看起来好像通过了

var o = {};
(function(x){x=null})(o);       //o is NOT null after this statement
(function(x){x.foo = "foo"; x.bar = "bar";})(o)   //o has properties foo and bar after this statement
x
指向
o
,但您只是将
x
指定为指向另一个对象,
null
,因此不会更改
o

(function(x){
  x=null
})(o); 

在此代码中,您正在更改
x
指向的任何对象的属性(添加
foo
bar
),即
o
。此更改将反映到
o

第1行:创建了一个对象。对它的引用被传递到
o

(function(x){
  x=null
})(o); 
第2行:调用一个函数。对象的引用作为参数传递。然后,引用(在
x
中)被
null
覆盖(不接触对象本身或对对象的引用仍分配给
o


第3行:调用一个函数。对象的引用作为参数传递。将
foo
bar
属性添加到对象中并指定值。

在第一个函数中,将null指定给变量
x
,而不是
o
。如果你想把它分配给
o
你必须通过引用传递它。我只是在想有没有办法不返回就从闭包中删除对象。。。