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

How can I dynamically access a global variable in Node?

本文关键字:Node 全局变量 访问 何动态 动态      更新时间:2023-09-26

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

var foo = "foo";
(function() {
    var foo = "bar";
    console.log(foo);
    // => "bar"
    console.log(window["foo"]);
    // => "foo"
})();

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

如果你想要一种与环境无关的方法,例如,在编写代码以同时在浏览器和 Node.js 上工作时,你可以在 JavaScript 文件顶部的全局代码中做这样的事情:

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

然后使用类似于在浏览器上下文中window以及在 Node.js 上下文中使用globalglobalObject

请注意,您必须声明一个不带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.

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

从节点全局文档

在浏览器中,顶级作用域是全局作用域。这意味着 在浏览器中,如果您在全局范围内 var,某些东西将定义一个 全局变量。在 Node 中,这是不同的。顶级范围不是 全球范围;var 节点模块中的某些内容将是本地的 该模块。