我正在尝试使用字符串更新nodejs中变量的内容。 在客户端javascript中,这是通过使用window [variable]来完成的,但是因为nodejs中没有“窗口”。我尝试使用“this”和“module”,但是我得到的只是一个空对象。需要帮助谢谢
代码段:
var myVariable = 'Hello';
var exchangeVariable = 'myVariable';
this[exchangeVariable] = 'Hello World';
/*
myVariable should equal to 'Hello World!'
*/
谢谢!
答案 0 :(得分:10)
在我直接回答你的问题之前,这是一些背景知识:
在JavaScript中,对象可以用点表示法(someObj.property
)索引,也可以像在示例中那样索引它们(someObj["property"]
)
在浏览器中,window
是浏览器评估您的代码的全局上下文。节点使用variable called global
。
因此,如果您想引用一个全局定义的变量:
> var someGlobalVar = "hi";
> var myLookupKey = "someGlobalVar";
> global[myLookupKey]
'hi'
但是,这通常被认为是非常糟糕的做法(在Node和浏览器中)。这有很多原因,但我只专注于一个:
在Node中,模块(每个require
d文件)应被视为不共享全局状态(在某些情况下,它们不能共享状态)。如果您尝试跨文件共享状态,我建议您阅读节点文档的modules section。
答案 1 :(得分:0)
您可以创建自己的变量哈希或数组,并自己分配变量。
var myVariable = "Hello";
var varArray = new Array()
varArray["exchangeVariable"] = myVariable;