在 JavaScript 中通过名称字符串动态获取全局变量
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1920867/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Get global variable dynamically by name string in JavaScript
提问by appqui-platform
<script>
//in one script
var someVarName_10 = 20;
</script>
I want to get access to this variable from another script by name of variable. With window object its simple, is it possible with local variable?
我想通过变量名从另一个脚本访问这个变量。使用 window 对象很简单,是否可以使用局部变量?
I mean access this var by code like this:
我的意思是通过这样的代码访问这个 var:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
回答by YOU
Do you want to do something like this?
你想做这样的事情吗?
<script>
//in one script
var someVarName_10 = 20;
alert(window["someVarName_10"]); //alert 20
</script>
Update: because OP edited the question.
更新:因为 OP 编辑了问题。
<script>
num=10;
alert(window['someVar' + 'Name_' + num]); //alert 20
</script>
回答by Andrew Shatnyy
I've noticed that everyone is advising global var creation this will lead to variables leak to global namespace. When you dynamically creating classnames or just variables it's easy to keep em local:
我注意到每个人都在建议创建全局变量,这将导致变量泄漏到全局命名空间。当您动态创建类名或仅创建变量时,很容易将 em 保持在本地:
this['className'] = 123;
or
或者
this['varName'] = 123;
Name-spacing would look like this:
名称间距看起来像这样:
vars = {};
vars['varName'] = 123;
vars.varName // 123
回答by Matteo Baroni
<script>
var someVarName_10 = 20;
var num = 10;
alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>
回答by Nereo Costacurta
well, for debugging purpose only, you could do something like this. I use it during the development of classes, where some variables must remain private (var). this work even in local variable (and global of curse)
好吧,仅出于调试目的,您可以这样做。我在类的开发过程中使用它,其中一些变量必须保持私有(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
回答by Sarfraz
If this is what you said:
如果这就是你所说的:
<script type="text/javascript">
var hello = 'test';
</script>
<script type="text/javascript">
alert (hello);
</script>
It works because script are finally available to the document and you can access their vars.
它起作用是因为脚本最终可用于文档并且您可以访问它们的变量。

