Ben*_*ton 14 javascript variables closures function local
可能重复:
如何在javascript中动态访问本地范围?
大家好.
我们都知道您可以使用[]语法通过它的名称访问javascript对象的属性.例如ob ['nameOfProperty'].
你能为局部变量做同样的事吗?这里的另一个答案表明答案是使用window ['nameOfVar'].然而,这只适用于海报,因为他在窗口级范围内定义变量.
我认为这通常是可能的,因为Firefox的Firebug(我认为是用javascript编写的)可以显示本地和闭包变量.是否有一些我不知道的隐藏语言功能?
具体来说,这就是我想要做的事情:
var i = 4;
console.log(window['i']); // this works..
function Func(){
var j = 99;
// try to output the value of j from its name as a string
console.log(window['j']); // unsurprisingly, this doesn't work
}
Func();
Run Code Online (Sandbox Code Playgroud)
Bob*_*Bob 13
我不知道JavaScript内置任何引用类似的局部变量(尽管可能应该考虑所有变量都由字符串内部引用).
如果你真的需要通过字符串访问,我建议将所有变量保存在一个对象中:
var variables = {
"j": 1
};
alert(variables["j"]);
Run Code Online (Sandbox Code Playgroud)
更新:有点不好意思,没有办法像你想要的那样做.在内部,变量是声明性环境记录中的可变绑定.属性通过对象的环境记录绑定到它们是属性的对象,但实际上有一种方法可以使用括号来访问它们.不幸的是,没有办法以相同的方式访问声明性环境记录.
使用窗口或任何其他全局访问器访问变量将不起作用,因为该变量不可全局访问.但您可以使用eval来评估任何表达式:
<script>
function test(){
var j = 1;
alert(eval("j"));
}
test();
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33122 次 |
| 最近记录: |