如何使用名称中的其他变量值创建javascript变量

时间:2012-06-29 10:03:20

标签: javascript

嗨我需要在javascript循环中创建一个变量加载,所以说我的循环从0开始循环5次,到最后应该定义以下变量:

variable_0
variable_1
variable_2
variable_3
variable_4

有谁能告诉我该怎么做?

3 个答案:

答案 0 :(得分:4)

这将通过在window对象上注册它们来创建“全局”变量:

for (var i = 0; i != 5; ++i) {
    window['variable_' + i] = null;
}

这样做并不是很好但是= /更好的方法是定义一个在其中创建动态属性的对象。

var obj = {}
for (var i = 0; i != 5; ++i) {
    obj['variable_' + i] = null;
}

console.log(obj.variable_0); // null

答案 1 :(得分:1)

为什么不使用数组:

var variable = [];

如果你真的想要创建5个变量,你需要选择它们的范围,最简单的可能是window,然后你可以使用sqare括号语法:

for(var i=0;i<5; i++){
    window["variable_" + i] = 0; // or anything really!
}

现在可以使用以下变量:

window.variable_1 = 123

答案 2 :(得分:0)

您只能在Object中创建可变命名的变量:

obj['variable_' + i] = value;

功能范围变量没有等价物,但你当然可以这样做:

function foo() {
    var obj = {};
    for (var i = 0; ... ) {
        obj['variable_' + i] = value;
    }
}

您可以使用window全局对象代替obj伪造全局变量(但不应该伪造),如@Jack所示。

当然在大多数情况下(因为你使用数字来区分变量)你真正要做的就是使用一个数组:

var myvar = [];
for (var i = 0; i < n; ++i) {
    myvar[i] = ...;
}