假设我有一个变量名称数组:
var varNames = new Array("name1","name2","name3");
如何通过循环遍历var name1
数组来创建var name2
,var name3
和varNames
?
答案 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"];