我可以拥有这样的东西是Jquery
for(var i=0;i<10;i++)
{
var (eval(i+17)) = y;
y++;
}
我需要这个,因为我想在飞行中创建动态变量,任何应该能够将值赋值给它。
答案 0 :(得分:6)
这里的正确答案是使用数组:
var arr = [];
for (var i = 0; i < 10; i++) {
arr[i + 17] = y;
y++;
}
如果您知道当前的上下文,则可以使用相同的方式在其中创建变量。比如说,对于全局(window
)范围:
for (var i = 0; i < 10; i++) {
window[i + 17] = y;
y++;
}
但这意味着你用随机变量名称在整个范围内踩踏。将它们保存在一个数组中。
答案 1 :(得分:3)
实际上,您不必使用数组。你也可以使用对象。
var y = 0;
var obj = {};
var arr = [];
for (var i = 0; i < 10; i++) {
obj[i + 17] = y
arr[i + 17] = y;
y++;
}
console.log(obj);
console.log(arr);
控制台输出会像那样看起来(扩展):
Object
17: 0
18: 1
19: 2
20: 3
21: 4
22: 5
23: 6
24: 7
25: 8
26: 9
__proto__: Object
[undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, undefined, undefined,
undefined, undefined, undefined, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
使用的JSFiddle是here。
使用对象的额外好处是:
obj
var的大小应该小于arr
变量,因为它不会有“未使用的索引”以下适用于object并且无法将任何变量添加到数组:
var y = 0;
var obj = {};
var arr = [];
for (var i = 0; i < 10; i++) {
obj['my variable' + (i + 17)] = y
arr['my variable' + (i + 17)] = y;
y++;
}
arr
看起来像这样:
Object
my variable17: 0
my variable18: 1
my variable19: 2
my variable20: 3
my variable21: 4
my variable22: 5
my variable23: 6
my variable24: 7
my variable25: 8
my variable26: 9
__proto__: Object
和arr
将为空:[]