按名称访问 JavaScript 变量的值?

IT技术 javascript
2021-03-14 20:11:53

您好,可以通过名称访问 JavaScript 变量的值吗?例子:

var MyVariable = "Value of variable";


function readValue(name) {
     ....
}


alert(readValue("MyVariable"));

这可能吗,以便输出是“变量值”?如果是,我该如何编写这个函数?

谢谢

6个回答

window对象上定义了全局变量,因此您可以使用:

var MyVariable = "Value of variable";
alert(window["MyVariable"]);
-1 您需要在 MyVariable 之前删除 'var' 以使其成为 window 对象的一部分。
2021-04-16 20:11:53
为什么人们将这些答案标记为正确?只有当 OP 中的所有内容都在全局上下文中时,它才是正确的。正确答案要么需要添加“上下文”对象,要么需要修复糟糕的设计。
2021-04-22 20:11:53
@craftsman:那不是真的。在全局范围内声明的所有变量都是 window 对象的一部分。
2021-04-28 20:11:53

是的,你可以这样做:

var MyVariable = "Value of variable";
alert(window["MyVariable"]);
这是正确的,对于那些有兴趣了解更多信息的人,它被称为括号表示法
2021-04-22 20:11:53
..以及您使用 window[] 的原因是因为 MyVariable 在全局范围内,这使其成为window对象的属性windowobject 是客户端JS中的全局对象)
2021-04-24 20:11:53
你能用在另一个作用域中声明的变量来做到这一点吗?比如,如果我在函数中声明了一个变量,testFunc(){ var testVar }我可以用testFunc["testVar"]?
2021-05-07 20:11:53
这是一个很好的链接,尼克。感谢分享!
2021-05-11 20:11:53
var MyVariable = "Value of variable";    
alert(readValue("MyVariable"));    

// function readEValue(name) { readevalue -> readvalue // always do copy-paste to avoid errors  
function readValue(name) {   
 return window[name]   
}   

这就是全部;o)

行尾(回车)在我的回答中不起作用。对不起。小心重构它们。
2021-04-24 20:11:53
在尝试警告返回值之前不需要声明函数吗?
2021-05-01 20:11:53
var sen0=1;
if(window["sen"+n] > 0){
}

试试这个^_^

var MyVariable = "Value of variable";

alert(readValue("MyVariable"));

function readValue(name) {
    return eval(name)
}
如果您对字符串进行硬编码,那么您可以验证它是否安全……或者只是删除引号并正常使用名称。如果变量的名称在一个字符串中,那么我非常确定它来自外部的某个地方(AJAX 响应、数据库内容等),无法进行安全审计。
2021-05-05 20:11:53