在基于浏览器的JavaScript中,您可以执行以下操作:
var foo = "foo";
(function() {
var foo = "bar";
console.log(foo);
// => "bar"
console.log(window["foo"]);
// => "foo"
})();
有没有办法在Node中做类似的事情,缺少window
对象?
答案 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.
第二个实际上并不属于全局范围,它是该模块的本地范围。
在浏览器中,顶级范围是全局范围。这意味着 在浏览器中,如果你在全局范围内var会定义一个 全局变量。在Node中,这是不同的。顶级范围不是 全球范围; Node模块中的var将是本地的 那个模块。