プロが教えるわが家の防犯対策術!

例えば、Perlだと
${$変数}
とすれば変数自体を、別の変数で表せます。

javascriptでも同じことがしたくて
色々と試してみましたがどうにもうまくいきません。
検索しても答えが見つからないのでご質問させていただきます。

簡単な質問で申し訳ないのですが
回答お願いします。

A 回答 (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]);
//----------------------------
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/21 16:04

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/21 16:04

a = 'abc';


abc ="456";

alert($(a));

function $(n){ return eval(n); }
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/22 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!