<script>
//in one script
var someVarName_10 = 20;
</script>
我想通过变量名从另一个脚本访问这个变量。使用 window 对象很简单,是否可以使用局部变量?
我的意思是通过这样的代码访问这个 var:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
<script>
//in one script
var someVarName_10 = 20;
</script>
我想通过变量名从另一个脚本访问这个变量。使用 window 对象很简单,是否可以使用局部变量?
我的意思是通过这样的代码访问这个 var:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
你想做这样的事情吗?
<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>
我注意到每个人都在建议创建全局变量,这将导致变量泄漏到全局命名空间。当您动态创建类名或仅创建变量时,很容易将 em 保持在本地:
this['className'] = 123;
或者
this['varName'] = 123;
名称间距看起来像这样:
vars = {};
vars['varName'] = 123;
vars.varName // 123
<script>
var someVarName_10 = 20;
var num = 10;
alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>
好吧,仅出于调试目的,您可以执行以下操作。我在类的开发过程中使用它,其中一些变量必须保持私有(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
这不是我自己的答案,而是Arthur Araújo 的答案,但我认为它在这里很重要。
评估替代:
exp = '1 + 1'
x = Function('return ' + exp)()
console.log(x)