假设我有一个变量的名称数组:
var varNames = new Array("name1","name2","name3");
我如何创建var name1
,var name2
并var name3
通过varNames
数组循环?
假设我有一个变量的名称数组:
var varNames = new Array("name1","name2","name3");
我如何创建var name1
,var name2
并var name3
通过varNames
数组循环?
这将创建全局变量(在全局命名空间中,即window
)。
var varNames = ["name1","name2","name3"];
for (var i=0;i<varNames.length;i+=1){
window[varNames[i]] = 0;
}
name1; //=> 0
由于使用全局变量被认为是不好的做法,因此您可以在 custum 对象中创建变量:
var myVariables = {}
,varNames = ["name1","name2","name3"];
for (var i=0;i<varNames.length;i+=1){
myVariables[varNames[i]] = 0;
}
myVariables.name1; //=> 0
[ES20xx]
const myVariables = ['name1', 'name2', 'name3']
.reduce( (a, v, i) => ({...a, [v]: i + 1 }), {});
console.log(JSON.stringify(myVariables, null, 2));
您可以按如下方式进行。我添加了警报以证明您可以为这些变量设置值。
var varNames = new Array("name1","name2","name3");
for(var i = 0; i < varNames.length; i++) {
window[varNames[i]] = i;
}
alert("name1: " + name1);
alert("name2: " + name2);
alert("name3: " + name3);
您的问题的直接答案是 - 您可以使用eval
:
var varNames = new Array("name1","name2","name3");
for (var i=0; i<varNames.length; i++) {
var varName = varNames[i];
eval("var "+varName); // would be "var name1"
}
请注意,尽管这被认为是不好的做法,通常没有理由在这种情况下使用 eval。另请注意,使用以下样式创建数组更为常见:
var varNames = ["name1", "name2", "name3"];