1

嗨,我需要在 javascript 循环中创建大量变量,所以说我的循环从 0 开始循环 5 次,到它结束时应该定义以下变量:

variable_0
variable_1
variable_2
variable_3
variable_4

谁能告诉我该怎么做?

4

3 回答 3

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
于 2012-06-29T10:06:07.050 回答
1

为什么不只使用数组:

var variable = [];

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

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

现在可以使用以下变量:

window.variable_1 = 123
于 2012-06-29T10:07:13.803 回答
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] = ...;
}
于 2012-06-29T10:08:01.390 回答