可以說我有名字的數組變量:如何從數組中動態創建JavaScript變量?
var varNames = new Array("name1","name2","name3");
如何通過剛剛通過varNames
陣列循環創建var name1
,var name2
和var name3
?
可以說我有名字的數組變量:如何從數組中動態創建JavaScript變量?
var varNames = new Array("name1","name2","name3");
如何通過剛剛通過varNames
陣列循環創建var name1
,var name2
和var name3
?
這將創建全局變量(在全局名稱空間中,即window
)。
var varNames = ["name1","name2","name3"];
for (var i=0;i<varNames.length;i+=1){
window[varNames[i]] = 0;
}
name1; //=> 0
由於使用全局變量被認爲是不好的做法,你可以一個對象俗中創建變量:
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
你可以這樣做,如下所示。我添加了警報以證明您可以爲這些變量設置一個值。
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"];
它通常不是動態地創建全局變量是個好主意。也許如果你描述了更大的局面,有人可能會提出更好的方法。 – JJJ 2012-08-04 08:54:00