1

我正在尝试使用字符串更新 nodejs 中变量的内容。在客户端javascript中,这是使用window[variable]完成的,但是因为nodejs中没有“window”。我尝试使用“this”和“module”,但是我得到的只是一个空对象。需要帮助谢谢

代码片段:

var myVariable = 'Hello';
var exchangeVariable = 'myVariable';

this[exchangeVariable] = 'Hello World';

/*
    myVariable should equal to 'Hello World!'
*/

谢谢!

4

2 回答 2

13

在我直接回答你的问题之前,这里有一些背景:

在 JavaScript 中,对象可以通过点符号 ( someObj.property) 进行索引,也可以像您在示例中所做的那样对它们进行索引 ( someObj["property"])

在浏览器中,window是浏览器在其中评估您的代码的全局上下文。Node 使用一个名为global.

所以,如果你想引用一个全局定义的变量:

> var someGlobalVar = "hi";
> var myLookupKey = "someGlobalVar";
> global[myLookupKey]
'hi'

但是,这通常被认为是非常糟糕的做法(在 Node 和浏览器中)。这有很多原因,但我只关注一个:

在 Node 中,模块(每个required 文件)应该被视为不共享全局状态(并且在某些情况下,它们不能共享状态)。如果您尝试跨文件共享状态,我鼓励您通读节点文档的模块部分。

于 2012-04-30T01:36:01.907 回答
0

您可以创建自己的变量散列或数组并自己分配变量。

var myVariable = "Hello";
var varArray = new Array()
    varArray["exchangeVariable"] = myVariable;
于 2012-04-30T01:31:31.310 回答