var foo = "bar"
var bar = "realvalue";
是否可以打印bar
using的值foo
?
方法一:全局变量
var foo = "bar";
var bar = "realvalue";
alert(window[foo]);
或者
方法2:命名空间
将你的js划分为命名空间
var namespace = {
foo : "bar",
bar : "realvalue"
};
alert(namespace[namespace.foo]);
是的,你可以做这样的事情eval
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
编辑:似乎很多人反对使用 eval() 函数。我在使用它之前的建议是阅读这个问题:为什么使用 JavaScript eval 函数是个坏主意?
然后,一旦您了解了风险,您就可以自己决定是否要使用它。
如果它是一个全局变量,你可以使用window[foo]
不要使用非全局变量进行这种构造,只需将您可能会浮动的任何变量都限定在范围内。
var myscope = {
bar: 'realvalue'
},
foo = 'bar';
alert(myscope[foo]);
顺便说一句,上面不依赖浏览器的默认行为来在window
对象中注册全局变量,使其也适用于 Node.js 之类的东西。
全局变量是在window
对象上定义的,因此您可以使用:
var bar = "realvalue";
alert(window["bar"]);
var foo = "bar";
var bar = "realvalue";
foo=bar;
console.log(foo);
alert(foo);
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
是的,通过eval
. 但不幸的是,并非没有eval
,这是一个不好的主意。