我有一个全局变量MyGlobalVar和一些看起来像这样的代码:
var MyGlobalVar = null;
function PlayWithMyGlobal() {
MyGlobalVar = new Object();
.... adding properties to MyGlobalVar
MoreFun(MyGlobal);
}
function MoreFun(TheVar) {
is TheVar here a local or just a reference to the global?
}
Run Code Online (Sandbox Code Playgroud)
如果我传递全局变量,我还在使用全局吗?谢谢.
如果我传递全局变量,我还在使用全局吗?谢谢.
这取决于你传递变量是否是一个对象或一个原始(number
,string
,boolean
,undefined
,null
是基元)值在首位.对象通过引用和基元按值传递.
在您的情况下,您正在传递对象:
MyGlobalVar = new Object();
Run Code Online (Sandbox Code Playgroud)
在JS中,对象通过引用传递.所以你仍然在研究这个变量.
您可以这样确认:
var MyGlobalVar = null;
function PlayWithMyGlobal() {
MyGlobalVar = new Object();
MoreFun(MyGlobalVar);
}
function MoreFun(TheVar) {
MyGlobalVar.foo = 'I am foo'; // property created here
}
PlayWithMyGlobal();
console.log(MyGlobalVar.foo); // I am foo
Run Code Online (Sandbox Code Playgroud)