2

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

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

6 回答 6

5

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

var Container = {};
var xyz = "test";
Container[xyz] = "abc";
alert(Container['test']);
于 2012-10-01T18:01:08.493 回答
2

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

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

var xyz = "test";

//global

window[xyz] = "abc";

alert(test);    // "abc"

// object property

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

alert(myData.test);    // "abc"
于 2012-10-01T18:00:10.093 回答
0

eval 这样做:

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

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

于 2012-10-01T18:01:08.673 回答
0

如果不使用 eval 或 with,这样的事情是不可能的,并且由于各种原因不推荐使用这些方法。

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

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

obj[key] = 'another value';

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

于 2012-10-01T18:01:29.290 回答
0

如果是全局范围

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

更好地使用对象

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

JSFiddle 示例

于 2012-10-01T18:02:33.610 回答
0
var xyz = "test";   
eval ( xyz + "= 'abc';");
alert (test);
于 2012-10-01T18:03:34.030 回答