Javascript:通过名称访问闭包中的局部变量或变量

标签 javascript function variables local closures

<分区>

Possible Duplicate:
How can I access local scope dynamically in javascript?

大家好。
我们都知道您可以使用 [] 语法通过名称访问 javascript 对象的属性。例如ob['nameOfProperty'].

你能对局部变量做同样的事情吗?另一个答案here建议答案是使用 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();

最佳答案

我不知道 JavaScript 中有任何内置的东西可以像这样引用局部变量(尽管可能应该考虑所有变量都在内部由字符串引用)。

如果您确实需要通过字符串访问,我建议将所有变量保存在一个对象中:

var variables = {
    "j": 1
};
alert(variables["j"]);

更新:让我有点烦恼的是没有办法按照你想要的那样做。在内部,变量是声明性环境记录中的可变绑定(bind)。属性通过对象的环境记录绑定(bind)到对象,它们是对象的属性,但实际上有一种方法可以使用括号访问它们。遗憾的是,无法以相同的方式访问声明性环境记录。

关于Javascript:通过名称访问闭包中的局部变量或变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2336508/

相关文章:

javascript - 为什么 Node.js 无法处理 Vue.js 的请求?

c++ - 给定初始种群 x,达到所需种群 y 的最少步骤是什么

java - 如何动态命名变量? - java

objective-c - objective-c : Local variables do I need set it to nil after using it to release memory?

Javascript onmouseout sleep ?

javascript - 为什么在 AngularJs 中 http.delete 时我不能传递参数?

javascript - 放入输入文件时填写文件详细信息

function - lua - 如何创建函数

javascript - 如何在 JavaScript 上更新 iframe 的 src 和链接的 onclick

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP