javascript将对象传递到函数中
将对象o传递到函数中时发生了什么?第一个函数使o看起来好像没有通过;第二个函数使o看起来好像通过了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指定为指向
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
你必须通过引用传递它。我只是在想有没有办法不返回就从闭包中删除对象。。。