如何从数组动态创建javascript变量?

时间:2012-08-04 08:50:02

标签: javascript arrays variables dynamic

假设我有一个变量名称数组:

var varNames = new Array("name1","name2","name3");

如何通过循环遍历var name1数组来创建var name2var name3varNames

3 个答案:

答案 0 :(得分:8)

这将创建全局变量(在全局命名空间中,即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

编辑2017

使用es≥6:

const [v1, v2, v3] = ["name1","name2","name3"];
console.log(v1); // => name1

答案 1 :(得分: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);

答案 2 :(得分:1)

您问题的直接答案是 - 您可以使用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"];