javascriptについてです。


for(var i=0; i<10; i++){
hoge● = i;
}

●印部分に i の番号を入れたいのですが
どのように書けば良いのでしょうか。
下記と同じ様になる様にしたいと言う事です。
配列ではなく、変数にしたいのです。

hoge1 = 1;
hoge2 = 2;
hoge3 = 3;

よろしくお願い致します。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2017/09/11 07:06:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rsc96074 No.1

回答回数4504ベストアンサー獲得回数437

ポイント100pt

 eval()関数を使うのはどうでしょうか。(^_^;

<script>
var script = '';
for(var i=0; i<10; i++){
    script+="hoge"+i+"="+i+";";
}
eval(script);
document.write(2*hoge5+1);    // 2*5+1=11
</script>
他1件のコメントを見る
id:rsc96074

 for文の中で使うなら、こんなのはどうでしょうか。

<script>
for(var i=0; i<10; i++){
    eval("hoge"+i+"="+i+";");
}
document.write(2*hoge5+1);    // 2*5+1=11
</script>
2017/09/11 00:10:43
id:worldtravel

こういう書き方があるのですね。
勉強になりました。
ありがとうございました。

2017/09/11 07:03:49

その他の回答1件)

id:rsc96074 No.1

回答回数4504ベストアンサー獲得回数437ここでベストアンサー

ポイント100pt

 eval()関数を使うのはどうでしょうか。(^_^;

<script>
var script = '';
for(var i=0; i<10; i++){
    script+="hoge"+i+"="+i+";";
}
eval(script);
document.write(2*hoge5+1);    // 2*5+1=11
</script>
他1件のコメントを見る
id:rsc96074

 for文の中で使うなら、こんなのはどうでしょうか。

<script>
for(var i=0; i<10; i++){
    eval("hoge"+i+"="+i+";");
}
document.write(2*hoge5+1);    // 2*5+1=11
</script>
2017/09/11 00:10:43
id:worldtravel

こういう書き方があるのですね。
勉強になりました。
ありがとうございました。

2017/09/11 07:03:49
id:psne No.2

回答回数605ベストアンサー獲得回数334

ポイント100pt
  • ブラウザ上で動作させる
  • 変数を動的に作る
  • あまり良い方法でなくても良い

という条件であれば、windowオブジェクトに直接変数を追加していく方法があります。

for(var i=0; i<10; i++){
window["hoge"+i] = i;
}
console.log(hoge1); // 1
console.log(hoge2); // 2
console.log(hoge3); // 3
console.log(hoge9); // 9

動作している環境がブラウザの場合、グローバル変数はwindowオブジェクトの子として作成されます。
このため、

var test=100;

window["test"]=100;

は同じ動作(結果)となります。
関数の中で使用した場合で関数の外では結果が異なってしまったり、また、他のコードの影響を受ける・与える事があります。
そのため、あまり良い方法ではないという条件が付きます。

※この回答は、わかりやすさを優先させて表現しています。

id:worldtravel

「window」にすると、このような事が出来るのですね。
今回の私の使い方を考えると問題はありません。
ありがとうございました。

2017/09/11 07:05:39

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません