我正在尝试使用字符串更新nodejs中变量的内容。 在客户端 JavaScript 中,这是通过使用 window[variable] 来完成的,但是因为 NodeJS 中没有“窗口”。我尝试使用“this”和“module”,但是我得到的只是一个空对象。需要帮助谢谢
代码片段:
var myVariable = 'Hello';
var exchangeVariable = 'myVariable';
this[exchangeVariable] = 'Hello World';
/*
myVariable should equal to 'Hello World!'
*/
谢谢!
最佳答案
在直接回答您的问题之前,先介绍一些背景知识:
在 JavaScript 中,对象可以通过点符号 (someObj.property
) 进行索引,也可以像示例中那样对它们进行索引 (someObj["property"]
) >)
在浏览器中,window
是浏览器在其中评估代码的全局上下文。 Node 使用 variable called global
.
因此,如果您想引用已全局定义的变量:
> var someGlobalVar = "hi";
> var myLookupKey = "someGlobalVar";
> global[myLookupKey]
'hi'
但是,这通常被认为是非常糟糕的做法(在 Node 和浏览器中)。造成这种情况的原因有很多,但我只关注一个:
在 Node 中,模块(每个 require
d 文件)应该被视为不共享全局状态(并且在某些情况下,它们无法共享状态)。我鼓励您仔细阅读modules section如果您尝试跨文件共享状态,请参阅 Node 文档。
关于string - NodeJS 将字符串转换为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377478/