在JavaScript中通过名称stringdynamic获取全局variables

<script> //in one script var someVarName_10 = 20; </script> 

我想通过variables名从另一个脚本访问这个variables。 用窗口对象简单,用局部variables可能吗?

我的意思是通过这样的代码来访问这个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> 

我注意到,每个人都build议全局variables创build这将导致variables泄漏到全局名称空间。 当你dynamic地创build类名或variables时,很容易保持本地:

 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> 

好吧, 只是为了debugging目的 ,你可以做这样的事情。 我在开发类时使用它,其中一些variables必须保持私有(var)。 这个工作甚至在局部variables(和全局的诅咒)

 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 

如果这是你所说的话:

 <script type="text/javascript"> var hello = 'test'; </script> <script type="text/javascript"> alert (hello); </script> 

它的工作原理是脚本最终可用于文档,您可以访问它们的variables。