动态Javascript变量名称

时间:2011-10-14 02:37:02

标签: javascript

  

可能重复:
  javascript - dynamic variables

我可以拥有这样的东西是Jquery

for(var i=0;i<10;i++)
{
   var (eval(i+17)) = y;
   y++;
}

我需要这个,因为我想在飞行中创建动态变量,任何应该能够将值赋值给它。

2 个答案:

答案 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将为空:[]