javascript:将全局var传递给函数

fre*_*hie 0 javascript

我有一个全局变量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)

如果我传递全局变量,我还在使用全局吗?谢谢.

Sar*_*raz 5

如果我传递全局变量,我还在使用全局吗?谢谢.

这取决于你传递变量是否是一个对象或一个原始(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)

  • *"在JS中,对象通过引用传递"* - [pedants会不同意](http://stackoverflow.com/a/9070366/201952),但这就是人们普遍理解的方式. (3认同)