我可以在JavaScript中使用变量作为变量名吗?

问题描述 投票:0回答:4

我试图使用一个变量作为另一个变量名称。例如,我有以下内容:

var dynamicname = 'name1_'

我试图将它设置为这样的新变量的名称:

dynamicname + '2' = 'myvalue'

这显然不起作用,但有没有办法实现这一目标? eval会适合吗?

javascript variable-declaration
4个回答
1
投票

为了保存已观看视频的指示符/标记,您可以使用Set或者如果您需要更多存储信息,请使用Map而不是使用动态创建的变量,您还需要为变量创建访问器。

var seen = new Set;

console.log(seen.has('foo')); // false;

seen.add('foo');

console.log(seen.has('foo')); //  true;

2
投票

稍微关闭,但使用对象的可能答案可能是这样的:

const obj = {
    [ dynamicNameVar + '2' ]: ...
}

或者,对于老派的人来说,

var obj = {};
obj[dynamicNameVar + '2'] = ...

我希望这有帮助! :)


1
投票

正如评论中所提到的,你永远不应该这样做。

但是如果你想这样做:

var name ="name1_";

// declare a new var as name1_test and set it to 'TestWorked'.
eval("var "+name+"test = 'TestWorked'");

// prints value of name1_test ('TestWorked')
console.log(name1_test);

0
投票

正如其他人所说,这是一种不好的做法,你应该使用对象。但是如果有人真的因某种原因需要这样做,正确的方法是使用window对象而不是eval。在你的情况下,它将是:

var dynamicname = 'name1_'
window[dynamicname + '2'] = 'myvalue'

你可以做alert(name1_2),它会显示“myvalue”。

© www.soinside.com 2019 - 2024. All rights reserved.