如何在JavaScript中动态创建变量

时间:2010-05-24 09:25:33

标签: javascript

我正在寻找一种在javascript中动态创建变量的方法

例如

我有一个循环

for (i=0;i<15;i++){
}

现在我需要动态创建变量,例如var“a”+ i表示循环中的eavh值。这可能吗?如何?

7 个答案:

答案 0 :(得分:9)

由于您正在处理数字,顺序变量 - 使用数组。

var foo = [];
for (var i = 0; i < 15; i++) {
    foo[i] = something;
}

答案 1 :(得分:8)

如果我们假设您需要与每次迭代相关的几个变量([foo1,bar1],[foo2,bar2] ...),那么有两种方法

使用数组

var foo = [], bar = [];
foo[1] = "foo"; 
bar[1] = "bar";

使用对象

var myVars = {};
myVars["foo" + 1] = "foo";
myVars["bar" + 1] = "bar";

最后一个也可以写成

 myVars.bar1 = "bar";

使用eval,正如有人建议的那样。

答案 2 :(得分:4)

为了满足您的确切要求,我只知道eval()

eval("varname"+i+" = 'Hello';");

另一方面,您可以考虑使用数组。更清洁:它们不会使全局命名空间混乱,您可以整齐地在组中订购变量。

arrayname[i] = value;

答案 3 :(得分:1)

用如此大量的变量污染您的命名空间是不明智的。改为使用数组。

答案 4 :(得分:1)

您可以将邪恶的eval功能用于此目的:

for (var i=0; i < 15; i++){
    eval( 'var a' + i + ' = "something"' );
}

答案 5 :(得分:1)

window主要代表浏览器上的全局对象。您可以使用它或将其范围限定为您自己的对象。

var my = {};

for(var i = 0; i < 15; i++) {
    my["a" + i] = "value: " + i;
}

console.log(my.a4); // "value: 4"

答案 6 :(得分:1)

我会考虑使用array而不是变量。 Array具有push方法,可为数组添加新元素。