私は次の変数を持っています:
var MyVar = "8";
たとえば、2つの文字列があります。
var foo = "My";
var bar = "Var";
ここで、MyVar値をアラートします。つまり、「MyVar」ではなく「8」をアラートします。
alert(foo + bar) // returns "MyVar"
私は次の変数を持っています:
var MyVar = "8";
たとえば、2つの文字列があります。
var foo = "My";
var bar = "Var";
ここで、MyVar値をアラートします。つまり、「MyVar」ではなく「8」をアラートします。
alert(foo + bar) // returns "MyVar"
eval
これは、必要になるまれなケースです。
コード
var MyVar = "8",
foo = "My",
bar = "Var";
alert(eval(foo + bar))
それがグローバル変数であると仮定します:
alert(window[foo + bar])
しかし、そのためにはおそらくオブジェクトとプロパティを使用する方がよいでしょう。オブジェクトのプロパティには、ブラケット表記でもアクセスできます。
var obj = {
MyProp : 8
};
var foo = "My";
var bar = "Prop";
alert(obj[foo + bar]);
あなたがしていることの多くにコンテキストを変更することなく、eval
関数を使用できます。ただし、非常に注意する必要があります。
var MyVar = 8;
var foo = "My";
var bar = "Var";
alert(eval(foo + bar));
これを行うには多くの方法がありますが、あなたが何をしているかに応じて。MyVar
などのコンテキストの一部になるように代入する場合this
、またはwindow
変数名としてキーを使用して値を単純に検索できます。
ウィンドウ コンテキスト
(function () {
window.MyVar = 8;
var foo = "My";
var bar = "Var";
alert(window[foo+bar]);
})();
関数のコンテキスト
new (function () {
this.MyVar = 8;
var foo = "My";
var bar = "Var";
alert(this[foo+bar]);
})();
オブジェクト コンテキスト
(function () {
var obj = {}
obj.MyVar = 8;
var foo = "My";
var bar = "Var";
alert(obj[foo+bar]);
})();