如何在Node中动态访问全局变量?

时间:2015-01-05 04:42:31

标签: javascript node.js global-variables

在基于浏览器的JavaScript中,您可以执行以下操作:

var foo = "foo";

(function() {
    var foo = "bar";

    console.log(foo);
    // => "bar"

    console.log(window["foo"]);
    // => "foo"
})();

有没有办法在Node中做类似的事情,缺少window对象?

2 个答案:

答案 0 :(得分:0)

如果您想要一种与环境无关的方法,例如,在编写代码以在浏览器和Node.js上工作时,您可以在JavaScript文件顶部的global code中执行以下操作:

var globalObject = typeof global === "undefined" ? this : global;

然后使用globalObject类似于window in the browser context的方式,并使用global in the Node.js context

请注意,您必须声明一个没有var的变量,以使其成为Node.js中global对象的一部分。

答案 1 :(得分:0)

您可以使用nodejs中的global关键字访问全局变量。

注意: - nodejs中有一条规则只有那些变量才是全局变量,而这些变量并未使用var声明。

如果你有像bellow

这样的声明
foo = "sample"; //this you can access using global

但是

var foo = "sample"; //this you cann't access using global.

第二个实际上并不属于全局范围,它是该模块的本地范围。

来自node global docs

  

在浏览器中,顶级范围是全局范围。这意味着   在浏览器中,如果你在全局范围内var会定义一个   全局变量。在Node中,这是不同的。顶级范围不是   全球范围; Node模块中的var将是本地的   那个模块。