如何在 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.
第二个实际上不在全局范围内,它是该模块的本地范围。
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.
在基于浏览器的 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.
第二个实际上不在全局范围内,它是该模块的本地范围。
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.