- ベストアンサー
JavaScriptの変数をさらに変数で表したい。
例えば、Perlだと ${$変数} とすれば変数自体を、別の変数で表せます。 javascriptでも同じことがしたくて 色々と試してみましたがどうにもうまくいきません。 検索しても答えが見つからないのでご質問させていただきます。 簡単な質問で申し訳ないのですが 回答お願いします。
- みんなの回答 (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]); //----------------------------
その他の回答 (2)
- steel_gray
- ベストアンサー率66% (1052/1578)
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
お礼
これも参考になりました。 ご回答ありがとうございます。
a = 'abc'; abc ="456"; alert($(a)); function $(n){ return eval(n); }
お礼
ご回答ありがとうございます。 せっかく回答していただいたのに ポイントをあげられず申し訳ありません
お礼
こういうやり方があるのですね 良く分かりましたありがとうございます。