有没有一种方法可以动态获取NodeJS文件作用域中的变量名?

时间:2019-03-05 15:17:30

标签: javascript node.js

我需要一种方法来动态调用文件中的变量, 在前端,如果您在函数外部创建变量,则将其放在窗口对象上,然后可以使用

window['nameOfVar']

我尝试使用 this 代替Node.js中的window,但是我什么也没得到。

const self  = this;
var temp = 'im dynamic'

console.log(self['temp']) // this will print undefined in nodejs

有没有办法实现这种行为

1 个答案:

答案 0 :(得分:5)

  

有没有一种方法可以实现这种行为

是的,但是您不想使用它。

您要描述的内容在浏览器中有效,因为顶级范围是全局的,并且使用var的顶级全局变量在全局对象上创建属性,该属性可以通过window访问。它在Node.js中不起作用,因为默认情况下,Node.js将您的代码作为模块运行,并且模块顶层的代码不在全局范围内,因此在该代码中使用var t在全局对象上创建一个属性(并且没有window全局对象可用来访问全局对象,尽管Node.js确实有global,但不要使用它)。

使用您自己的对象和属性,而不要长期这样做:

const stuff = {
    one: "I'm one",
    two: "I'm two"
};

for (let i = 0; i < 5; ++i) {
    const name = Math.random() < 0.5 ? "one" : "two";
    console.log(stuff[name]);
}