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

How to create javascript variable with other variable value in name

本文关键字:变量值 其他 创建 javascript 变量      更新时间:2023-09-26

嗨,我需要在javascript循环中创建变量负载,所以假设我的循环从0开始绕了5次,到最后应该定义以下变量:

variable_0
variable_1
variable_2
variable_3
variable_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

为什么不直接使用数组:

var variable = [];

如果真的想创建 5 个变量,需要选择它们的作用域,最简单的大概是 window 个,那么可以使用 sqare 括号语法:

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

现在,以下变量可用:

window.variable_1 = 123

您只能创建可变命名的变量作为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] = ...;
}