如何使用变量值来命名变量?
var xyz = "test";
var (xyz) = "abc";
alert (test);
如果你把它们放在一个对象中,你可以这样做:
var Container = {};
var xyz = "test";
Container[xyz] = "abc";
alert(Container['test']);
变量名不能是表达式的结果,除非您使用eval
,您不想这样做,或者除非它是一个全局变量。
如果你需要动态命名,你应该使用一个对象,并动态命名它的属性。这也是动态创建全局变量的方式。
var xyz = "test";
//global
window[xyz] = "abc";
alert(test); // "abc"
// object property
var myData = {};
myData[xyz] = "abc";
alert(myData.test); // "abc"
eval 这样做:
xyz = "test";
eval(xyz+"=123");
alert(test); // gives 123
我相信很多人对评估说不。但是,这样做了。
如果不使用 eval 或 with,这样的事情是不可能的,并且由于各种原因不推荐使用这些方法。
但是,您可以使用变量作为对象属性的键:
var key = 'somestring';
var obj = {};
obj[key] = 'another value';
虽然在全局对象(浏览器中的窗口)上设置属性会满足您的要求,但我强烈建议不要直接在全局范围内编写业务逻辑代码,尤其是使用动态变量名。随机名称冲突错误的可能性太严重了。
如果是全局范围
var xyz = "test";
window[xyz] = "abc";
alert (test);
更好地使用对象
var myObject = {};
var xyz = "test";
myObject [xyz] = "abc";
alert (myObject.test);
var xyz = "test";
eval ( xyz + "= 'abc';");
alert (test);