var foo = "bar"
var bar = "realvalue";
bar
を使用して値を印刷することは可能foo
ですか?
アプローチ 1: グローバル変数
var foo = "bar";
var bar = "realvalue";
alert(window[foo]);
また
アプローチ 2: 名前空間
js を名前空間に分割する
var namespace = {
foo : "bar",
bar : "realvalue"
};
alert(namespace[namespace.foo]);
ええ、あなたはこのようなことをすることができますeval
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
編集: 多くの人が eval() 関数の使用に反対しているようです。それを使用する前の私のアドバイスは、この質問を読んでください: JavaScript eval 関数を使用するのはなぜ悪い考えですか?
次に、リスクを理解したら、それを使用するかどうかを自分で決定できます。
それがグローバル変数の場合は、使用できますwindow[foo]
非グローバル変数を使用してこの種の構成を行うのではなく、他の方法で浮かんでいる変数をスコープするだけです。
var myscope = {
bar: 'realvalue'
},
foo = 'bar';
alert(myscope[foo]);
ところで、上記はブラウザのデフォルトの動作に依存せず、window
オブジェクトにグローバル変数を登録するため、Node.jsなどでも機能します。
var foo = "bar";
var bar = "realvalue";
foo=bar;
console.log(foo);
alert(foo);
グローバル変数はwindow
オブジェクトで定義されるため、次を使用できます。
var bar = "realvalue";
alert(window["bar"]);
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
はいeval
。しかし残念なことに、 なしeval
では使えません。