通过JavaScript中的名称字符串动态获取全局变量

app*_*orm 74 javascript

<script>
//in one script
var someVarName_10 = 20;
</script>
Run Code Online (Sandbox Code Playgroud)

我希望通过变量名称从另一个脚本访问此变量.窗口对象很简单,是否可以使用局部变量?

我的意思是通过以下代码访问此var:

<script>
  alert(all_vars['someVar' + 'Name' + num]);
</script>
Run Code Online (Sandbox Code Playgroud)

YOU*_*YOU 103

你想做这样的事吗?

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

alert(window["someVarName_10"]); //alert 20

</script>
Run Code Online (Sandbox Code Playgroud)

更新:因为OP编辑了这个问题.

<script>
  num=10;
  alert(window['someVar' + 'Name_' + num]); //alert 20
</script>
Run Code Online (Sandbox Code Playgroud)

  • 我不在乎OP*实际上*想要什么.我关心什么是问题标题,因此在我的搜索中成为谷歌结果. (7认同)
  • 那将是 window["a"].name; (2认同)

And*_*nyy 37

我注意到每个人都在建议全局var创建,这将导致变量泄漏到全局命名空间.当您动态创建类名或只是变量时,很容易保持em本地:

this['className'] = 123;
Run Code Online (Sandbox Code Playgroud)

要么

this['varName'] = 123;
Run Code Online (Sandbox Code Playgroud)

名称间距看起来像这样:

vars = {};
vars['varName'] = 123;
vars.varName // 123
Run Code Online (Sandbox Code Playgroud)

  • 这比接受的答案要好。更详细地说明此功能在类范围内的工作方式。 (2认同)

小智 11

<script>
    var someVarName_10 = 20;
    var num = 10;
    alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>
Run Code Online (Sandbox Code Playgroud)