Javascript 如何显示另一个变量的值?
是否可以使用Javascript 如何显示另一个变量的值?,javascript,Javascript,是否可以使用foo打印bar的值 如果是全局变量,可以使用窗口[foo]方法1:全局变量 var foo = "bar" var bar = "realvalue"; 或 方法2:名称空间 将js划分为名称空间 var foo = "bar"; var bar = "realvalue"; alert(window[foo]); 是,通过eval。但不幸的是,没有eval,这是一个很好的选择。是的,你可以用eval var namespace = { foo : "bar", bar
foo
打印bar
的值 如果是全局变量,可以使用窗口[foo]
方法1:全局变量
var foo = "bar"
var bar = "realvalue";
或
方法2:名称空间将js划分为名称空间
var foo = "bar";
var bar = "realvalue";
alert(window[foo]);
是,通过
eval
。但不幸的是,没有eval
,这是一个很好的选择。是的,你可以用eval
var namespace = {
foo : "bar",
bar : "realvalue"
};
alert(namespace[namespace.foo]);
编辑:似乎很多人反对使用eval()函数。在使用之前,我的建议是阅读以下问题:
一旦您了解了风险,您就可以自己决定是否使用它。全局变量在
窗口
对象上定义,因此您可以使用:
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
不要使用非全局变量进行这种构造,只需定义任何可能会浮动的变量
var bar = "realvalue";
alert(window["bar"]);
顺便说一句,以上内容并不依赖浏览器的默认行为在
窗口
对象中也注册全局变量,这使得它也适用于Node.js之类的东西。不过,请告诉我eval
解决方案。我收到了警报(eval(foo));这就是我需要的。eval是邪恶的;美好的就像铀是邪恶的一样。@RakeshJuyal并不真正喜欢铀。铀比eval()
有更多更好的用途。不,它不是全局变量。但我不知道我们可以使用window[foo]作为全局变量,所以+1。谢谢。我喜欢这个解决方案。名称空间虽然不是一个真正的名称空间,而是一个javascript对象,但它确实很酷。出于好奇,第一个解决方案不局限于浏览器吗?它在node.js应用程序中会工作吗?它展示了如何使用eval在这种情况下,eval
是否邪恶是另一回事,这是一个正确有效的答案虽然我不同意eval
命令,但这个解决方案仍然很重要,因为它很好地了解。在某些情况下,你不能没有它…- 1我认为这是一个坏的答案,因为它建议使用更安全的替代品存在危险的功能。如果它建议避免eval,或使用eval时可能出现的问题,或这些问题甚至存在,或更好的替代方案,我将取消我的反对票。@ANeves在回答中添加了一个免责声明:)@cowls现在我只不同意这个建议,不认为它再具有误导性。反对票被删除。:)我很好奇这个用例是什么?你什么时候用?
var myscope = {
bar: 'realvalue'
},
foo = 'bar';
alert(myscope[foo]);
var foo = "bar";
var bar = "realvalue";
foo=bar;
console.log(foo);
alert(foo);
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));