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

Can I use a variable as variable name in JavaScript?

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

var dynamicname = 'name1_'

我正在尝试将其设置为新变量的名称,如下所示:

dynamicname + '2' = 'myvalue'

这显然是行不通的,但有什么办法可以实现吗? eval 合适吗?

略有偏差,但使用对象对此的可能答案可能类似于:

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

或者,对于老派来说,

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

希望对您有所帮助! :)

如评论中所述,您永远不应该这样做。

但是如果你想这样做:

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);

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

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

您可以执行 alert(name1_2),它会显示 "myvalue"。

如果只为看过的视频保留 indicator/flag,您可以使用 Set or if you need more stored information, take a Map 而不是使用动态创建的变量,您仍然需要为变量创建访问器。

var seen = new Set;

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

seen.add('foo');

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

据我所知,这是最好的方法。

window["varname"]=32;
console.log(varname)