我可以在 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)
我正在尝试使用一个变量作为另一个变量名。例如,我有以下内容:
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)