我如何连接参数名称的2个字符串

How can I concatenation parameter name out of 2 strings?

本文关键字:2个 字符串 参数 何连接 连接      更新时间:2023-09-26

我有以下变量:

var MyVar = "8";

我有两个字符串,例如:

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

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

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

这是需要eval的罕见情况:

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

链接: http://jsfiddle.net/howderek/wcVNU/

假设它是一个全局变量:

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指定为某些上下文的一部分,例如thiswindow,您可以简单地使用键作为变量名查找值。

窗口背景

(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]);
})();