var foo = "bar"
var bar = "realvalue";
是否可以使用bar
打印foo
的值?
答案 0 :(得分:44)
方法1:全局变量
var foo = "bar";
var bar = "realvalue";
alert(window[foo]);
OR
方法2:命名空间
将您的js划分为名称空间
var namespace = {
foo : "bar",
bar : "realvalue"
};
alert(namespace[namespace.foo]);
答案 1 :(得分:17)
是的,您可以使用eval
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
编辑:似乎很多人反对使用eval()函数。我在使用之前的建议是阅读这个问题:Why is using the JavaScript eval function a bad idea?
然后,一旦您了解了您可以自行决定的风险,如果您想使用它。
答案 2 :(得分:14)
如果它是全局变量,您可以使用window[foo]
答案 3 :(得分:10)
不要使用非全局变量来执行这种构造,只需要调整您可能会浮动的任何变量。
var myscope = {
bar: 'realvalue'
},
foo = 'bar';
alert(myscope[foo]);
顺便说一句,上面的内容并不依赖于浏览器的默认行为,也可以在window
对象中注册全局变量,使其适用于Node.js等。
答案 4 :(得分:2)
全局变量在window
对象上定义,因此您可以使用:
var bar = "realvalue";
alert(window["bar"]);
答案 5 :(得分:2)
var foo = "bar";
var bar = "realvalue";
foo=bar;
console.log(foo);
alert(foo);
答案 6 :(得分:1)
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
答案 7 :(得分:0)
是的,通过eval
。但不幸的是,并非eval
,bad idea即可使用。