变量名由变量值组成

时间:2012-10-01 17:58:58

标签: javascript

如何使用变量值来命名变量?

var xyz = "test";   
var (xyz) = "abc";
alert (test);

6 个答案:

答案 0 :(得分:5)

如果你把它们放在一个物体中,你可以这样做:

var Container = {};
var xyz = "test";
Container[xyz] = "abc";
alert(Container['test']);

答案 1 :(得分:2)

变量名称不能是表达式的结果,除非您使用eval,这是您不想要的,或者除非它是全局变量。

如果需要动态命名,则应使用对象,并动态命名其属性。这也是动态创建全局变量的方式。

var xyz = "test";

//global

window[xyz] = "abc";

alert(test);    // "abc"

// object property

var myData = {};
myData[xyz] = "abc";

alert(myData.test);    // "abc"

答案 2 :(得分:0)

eval这样做:

xyz = "test";
eval(xyz+"=123");
alert(test); // gives 123

我相信很多人对eval说不。但是,这样做了。

答案 3 :(得分:0)

不使用eval或with,这样的东西是不可能的,并且出于各种原因不建议使用这些方法。

但是,您可以将变量用作对象属性的键:

var key = 'somestring';
var obj = {};

obj[key] = 'another value';

虽然在全局对象(浏览器中的窗口)上设置属性可以满足您的要求,但强烈建议不要直接在全局范围内编写业务逻辑代码,特别是使用动态变量名称。随机名称冲突错误的可能性太大了。

答案 4 :(得分:0)

如果是全球范围

var xyz = "test";   
window[xyz] = "abc";
alert (test);

最好使用对象

var myObject = {};
var xyz = "test";   
myObject [xyz] = "abc";
alert (myObject.test);

JSFiddle example

答案 5 :(得分:0)

var xyz = "test";   
eval ( xyz + "= 'abc';");
alert (test);