使用一个变量将另一个变量命名为javascript



在使用node.js和discord.js制作discordbot的过程中,我已经到了想要创建一个新变量的地步,在这种情况下,我想要创建一种具有一个属性的对象(字符串"server"和一些值字符串(。要命名所述新变量,我想要使用我在这里引用的服务器的服务器ID,该ID存储在另一个变量中。我能用什么方法做到这一点?

到目前为止我已经试过了eval("var " + serverID + " = {'server': 'test'}"),它给了我一个语法错误:第二个加号上的无效/意外标记(用字符串替换对象仍然给了我同样的错误(。我所看到的每一个地方都无助于解释eval函数的问题,我很困惑如何用另一种方式来做这件事。

如果你想到的第一件事是重组我如何处理变量和我使用的类型,那么无论这些输出是什么,都必须让我向这个变量添加更多信息,至少在我看来,这限制了我使用对象和添加属性。在代码的后面,我还将这个变量存储到JSON文件中,这也限制了我使用数组或对象。

我猜eval失败是因为serverID是一个数字(或表示数字的字符串(,所以语句看起来像var 123 = {'server': 'test'},这会产生语法错误。

在任何情况下,一个简单的替代方案都是在对象上创建一个属性,而不是变量。类似于:

var myVariables = {};
//...
myVariables[serverID] = {'server': 'test'};

如果它对您的情况有意义并且您确实需要一个全局变量,您甚至可以将它添加到global对象中。

没有充分的理由将一个变量存储为另一个变量的名称。正如您所提到的,实现所需内容的最简单方法是将serverID存储在对象中。

您的语法是正确的,尽管您可能希望确保您的服务器ID是合法的JavaScript标识符。

var serverID = "asddkjkisdf";
eval("var " + serverID + " = {'server': 'test'}")
console.log(asddkjkisdf);

然而,我建议创建一个类似对象数组的数据结构来存储这些信息。在这种情况下,您不必担心服务器ID的价值。例如

[{id: 'asdfasdf', server: 'test'}, ... ]

最新更新