<script>
//in one script
var someVarName_10 = 20;
</script>
我希望通过变量名从另一个脚本访问此变量。使用window对象很简单,是否可以使用局部变量?
我的意思是通过以下代码访问此var:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
答案 0 :(得分:97)
你想做这样的事吗?
<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>
答案 1 :(得分:34)
我注意到每个人都在建议全局var创建,这会导致变量泄漏到全局命名空间。 当您动态创建类名或只是变量时,很容易保持em本地:
this['className'] = 123;
或
this['varName'] = 123;
名称间距如下所示:
vars = {};
vars['varName'] = 123;
vars.varName // 123
答案 2 :(得分:11)
<script>
var someVarName_10 = 20;
var num = 10;
alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>
答案 3 :(得分:1)
好吧,仅针对调试目的,你可以做这样的事情。我在开发类时使用它,其中一些变量必须保持私有(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
答案 4 :(得分:0)
这不是我自己的答案,它是Arthur Araújo's answer,但我认为这是无关紧要的。
替代方法:
════════ Exception caught by rendering library ════════════
RenderBox was not laid out: _RenderListTile#0cd79 relayoutBoundary=up20 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1694 pos 12: 'hasSize'
The relevant error-causing widget was
RadioListTile<String>
答案 5 :(得分:-6)
如果这就是你说的话:
<script type="text/javascript">
var hello = 'test';
</script>
<script type="text/javascript">
alert (hello);
</script>
它的工作原理是因为脚本最终可用于文档,您可以访问它们的变量。