使用变量来命名另一个变量javascript

时间:2020-04-02 22:00:58

标签: javascript variables eval

在使用node.js和discord.js制作Discord机器人的过程中,我到了要创建一个新变量的地步,在本例中,该变量具有一个属性(字符串“ server”和一些用于值的字符串。)要命名新变量,我想使用我在这里指的服务器的服务器ID,该ID存储在另一个变量中。我该怎么做?

到目前为止,我已经尝试过 df['value'].str.split('/', expand=True) ,这给了我一个语法错误:第二个加号上的无效/意外令牌(用字符串替换对象仍然给我同样的错误)。我看过的所有地方都无法帮助解释eval("var " + serverID + " = {'server': 'test'}")函数出了什么问题,而且我对如何使用另一种方法感到困惑。

如果首先想到的是重新构造我如何使用变量和所使用的类型,那么无论此输出如何,都必须让我向该变量添加更多信息,至少在我看来这是限制我要使用对象并添加属性。稍后,我还将在代码中将此变量存储到JSON文件中,这也限制了我使用数组或对象。

3 个答案:

答案 0 :(得分:2)

我会猜测评估失败,因为您的serverID是一个数字(或代表数字的字符串),因此该语句看起来像var 123 = {'server': 'test'},它将给出一个语法错误。

无论如何,一种简单的替代方法是在对象上创建属性而不是变量。像这样:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

console.log(asddkjkisdf);

但是,我建议创建一个像对象数组这样的数据结构来存储此信息。在这种情况下,您不必担心服务器ID的值。例如

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