如何创建全局可访问变量?

时间:2011-04-08 23:31:09

标签: javascript global-variables

我正在尝试创建一个可以在任何地方工作的变量,而不是在一个函数中。

我该怎么做?我现在搜索了1个小时,我找不到它:(

我试过这个

noneTxt = document.innerHTML="Nothing is playing!";

function plinf() {
    if (myAudio.paused) {
        myAudio.play();
    }
    else {
    myAudio.pause();
    document.getElementById('message').innerHTML=noneTxt;
    }
}

但它只有在我将变量放在带有var前缀的函数中时才有效... 那我怎么能让它有点全球化呢? :/

3 个答案:

答案 0 :(得分:2)

你总是可以使用window对象来附加你的“全局”变量,但不是一个好主意,可能会导致与其他用法的冲突

window.noneTxt = document.innerHTML="Nothing is playing!";

答案 1 :(得分:0)

您可以创建一个可以访问私有变量的公共函数,例如

function Person() {
    var secret = "Secret Message";

    this.revealSecret = function() {
        return secret;
    }
}
var me = new Person();
me.revealSecret(); //returns "Secret Message"

答案 2 :(得分:0)

如果您可以管理多个JS文件,请创建一个名为“globals.js”的新javascript文件,并将所有全局变量放在那里:

var g1 = "this is a global var";
var g2 = "another global var";

然后在其他文件中自由使用这些变量,只要您记得在加载的每个页面中包含此文件。

'globals.js'文件还可以包含'getVar(varname)'等便利函数。

另一个步骤是拥有一个集合的变量,以及一个获取密钥并从集合中返回相应变量的函数。该函数还可以检查变量是否存在,如果不存在则返回默认值:

var globals = {
  g1: "this is a global var",
  g2: "another global var"
};

function getGlobalVar(varname) {
  if (typeof(globals[varname]) === 'undefined') {
    return "some default";
  } else {
    return globals[varname];
  }
}

-dbg