0

我有以下变量:

var MyVar = "8";

例如,我有 2 个字符串:

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

现在我想提醒 MyVar 值,意思是提醒“8”而不是“MyVar”

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 回答