Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示另一个变量的值?_Javascript - Fatal编程技术网

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));