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;
    }
}

@Jack で示されているように、windowの代わりにグローバル オブジェクトを使用することで、グローバル変数を偽造できます (ただしすべきではありません) 。obj

もちろん、ほとんどの場合 (変数を区別するために数値を使用しているため)、実際にすべきことは配列を使用することです。

var myvar = [];
for (var i = 0; i < n; ++i) {
    myvar[i] = ...;
}
于 2012-06-29T10:08:01.390 に答える