<script>
//in one script
var someVarName_10 = 20;
</script>
我想通过变量名从另一个脚本访问此变量。使用窗口对象很简单,可以使用局部变量吗?
我的意思是通过如下代码访问此变量:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
<script>
//in one script
var someVarName_10 = 20;
</script>
我想通过变量名从另一个脚本访问此变量。使用窗口对象很简单,可以使用局部变量吗?
我的意思是通过如下代码访问此变量:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
Answers:
你想做这样的事情吗?
<script>
//in one script
var someVarName_10 = 20;
alert(window["someVarName_10"]); //alert 20
</script>
更新:因为OP编辑了问题。
<script>
num=10;
alert(window['someVar' + 'Name_' + num]); //alert 20
</script>
var a = {name: "ABC"}。在这里window["a.name"]行不通。任何解决方法?
<script>
var someVarName_10 = 20;
var num = 10;
alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>
eval为我工作得更好!但请谨慎使用
好吧,仅出于调试目的,您可以执行以下操作。我在类的开发过程中使用它,其中某些变量必须保持私有(var)。即使在局部变量(和整体诅咒)中也可以完成这项工作
function MYCLASS(){
var a=1, b=2, c=3;
this.public = "variable";
this.debug = function(sVar){
return eval(sVar);
}
}
var myThing = new MYCLASS();
myThing.debug('a') //return 1
myThing.debug('b') //return 2
myThing.debug('c') //return 3
这不是我自己的答案,而是亚瑟·阿劳霍(ArthurAraújo)的答案,但我认为在这里没有关系。
评估替代:
exp = '1 + 1'
x = Function('return ' + exp)()
console.log(x)