0

私は次の変数を持っています:

var MyVar = "8";

たとえば、2つの文字列があります。

var foo = "My";
var bar = "Var";

ここで、MyVar値をアラートします。つまり、「MyVar」ではなく「8」をアラートします。

alert(foo + bar) // returns "MyVar"
4

3 に答える 3

5

evalこれは、必要になるまれなケースです。

コード

var MyVar = "8",
    foo = "My",
    bar = "Var";
alert(eval(foo + bar))

リンク: http://jsfiddle.net/howderek/wcVNU/

于 2013-03-18T15:57:58.657 に答える
4

それがグローバル変数であると仮定します:

alert(window[foo + bar])

しかし、そのためにはおそらくオブジェクトとプロパティを使用する方がよいでしょう。オブジェクトのプロパティには、ブラケット表記でもアクセスできます。

var obj = {
    MyProp : 8
};
var foo = "My";
var bar = "Prop";
alert(obj[foo + bar]);
于 2013-03-18T15:58:05.320 に答える
1

あなたがしていることの多くにコンテキストを変更することなく、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]);
})();
于 2013-03-18T16:02:23.800 に答える