在基于浏览器的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 上下文中使用global
的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.
第二个实际上不在全局范围内,它是该模块的本地。
从节点全局文档
在浏览器中,顶级作用域是全局作用域。这意味着 在浏览器中,如果您在全局范围内 var,某些东西将定义一个 全局变量。在 Node 中,这是不同的。顶级范围不是 全球范围;var 节点模块中的某些内容将是本地的 该模块。