我正在寻找一种在javascript中动态创建变量的方法
例如
我有一个循环
for (i=0;i<15;i++){
}
现在我需要动态创建变量,例如var“a”+ i表示循环中的eavh值。这可能吗?如何?
答案 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)