• ベストアンサー

JavaScriptの変数をさらに変数で表したい。

例えば、Perlだと ${$変数} とすれば変数自体を、別の変数で表せます。 javascriptでも同じことがしたくて 色々と試してみましたがどうにもうまくいきません。 検索しても答えが見つからないのでご質問させていただきます。 簡単な質問で申し訳ないのですが 回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Werner
  • ベストアンサー率53% (395/735)
回答No.3

evalをラップした関数を使う方法も、 windowオブジェクトのプロパティに[]演算子でアクセスする方法も ローカル変数に対してはうまく働きません。 //--------Sample-------------- function $(n){ return eval(n); } function test(){  var a = 'abc';  var abc ="456";  alert(eval(a)); //->456  alert(window.abc); //->undefined  alert($(a)); //->Error } test(); //---------------------------- なのでevalを普通に使えば良いと言うことになりますが、 たいていの場合evalなんて使わなくても オブジェクトに[]演算子でアクセスして連想配列として使えばやりたいことは出来るはずです。 //--------Sample-------------- var obj = {a:123, b:456}; obj.c = 789; var x1 = "a"; var x2 = "b"; var x3 = "c"; alert(obj[x1]); alert(obj[x2]); alert(obj[x3]); //----------------------------

kyotokyo
質問者

お礼

こういうやり方があるのですね 良く分かりましたありがとうございます。

その他の回答 (2)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

Javascriptでリファレンスが扱えるのかわかりません。 例えばグローバル変数/ローカル変数はwindowオブジェクトに、 コンストラクタ関数の変数はその関数オブジェクトにプロパティとして追加されるので、次のようにすれば'変数名'で扱うことは可能です。 リファレンスとは違いますが参考になれば。 var x1; // window.x1 var x2; // window.x2 varName = 'x1'; window[varName] = 'A'; // window.x1 = 'A' varName = 'x2'; window[varName] = 'B'; // window.x2 = 'B' alet(x1 + ':' + x2);// → A:B

kyotokyo
質問者

お礼

これも参考になりました。 ご回答ありがとうございます。

noname#84373
noname#84373
回答No.1

a = 'abc'; abc ="456"; alert($(a)); function $(n){ return eval(n); }

kyotokyo
質問者

お礼

ご回答ありがとうございます。 せっかく回答していただいたのに ポイントをあげられず申し訳ありません