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

How can I dynamically access a global variable in Node?

在基于浏览器的 JavaScript 中,您可以这样做:

var foo = "foo";

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

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

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

有没有什么方法可以在缺少 window 对象的 Node 中做类似的事情?

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

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

然后像 window in the browser context and as you would use global in the Node.js context.

一样使用 globalObject

请注意,您必须声明一个不带 var 的变量,它才能成为 Node.js 中 global 对象的一部分。

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

注意:- nodejs中有一个规则,只有那些未使用var声明的变量将是全局变量。

就像你有如下声明一样

foo = "sample"; //this you can access using global

但是

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

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

来自node global docs

In browsers, the top-level scope is the global scope. That means that in browsers if you're in the global scope var something will define a global variable. In Node this is different. The top-level scope is not the global scope; var something inside a Node module will be local to that module.