以编程方式声明变量?

时间:2012-12-09 06:52:11

标签: javascript

我正在尝试创建一堆这样的变量:

function l(){
    var a1 = 2,
        a2 = 4,
        a3 = 6,
        a4 = 8,
          .
          .
        a20 = 40;
}

但这需要太多线路,我正在寻找一种更聪明的方法。这就是我的想法:

function l(){
    for(var i=0; i<20; i++){
        var ("a"+i) = 2*i;
    }
}

但它可能无效,如果它有效(它没有),变量仍然在for范围内。有什么想法吗?

window["a"+i] or eval(...)

这些不起作用,因为我不希望它们在全球范围内。

通常一个数组会很好,但我只是在试验这是否可以在JavaScript中实现。也许将来我会遇到这样的事情。

3 个答案:

答案 0 :(得分:15)

不要这样做。做。不。做。这个。 使用数组。


如果您以编程方式创建它们的麻烦,您认为如何以编程方式引用到它们?

答案 1 :(得分:3)

我想你最好使用数组,例如:

function l(){
    var a = [];
    for(var i=0; i<20; i++){
        a[i] = 2*i;
    }
}

或者,如果你真的想要很长的变量列表,试试这个。但它使用eval()

function l(){
    var js = '';
    for(var i=0; i<20; i++){
        js += 'var a'+i+' = '+2*i+';'
    }
    eval (js);
}

答案 2 :(得分:3)

事实上,我认为使用对象是一个好主意。

var scope = {}
for (var i=1;i<=20;i++) {
  scope['a'+i] = 'stuff';   
}

结果将是您有一个scope对象,其中包含您想要的每个新创建变量!