4

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

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 中是否可行。也许将来我会遇到这样的事情。

4

3 回答 3

16

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


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

于 2012-12-09T06:55:26.023 回答
5

我想你最好使用一个数组,比如:

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);
}
于 2012-12-09T06:59:54.913 回答
4

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

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

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

于 2012-12-09T11:30:58.157 回答