以编程方式获取javascript函数的局部变量值?

时间:2009-04-13 21:33:57

标签: javascript metaprogramming

假设:

function foo(){
  var bar = "quux";
  console.log(/*mystery code here*/);
}

我正在寻找插入注释时会产生bar值的代码。举例来说,这样的东西在全球范围内起作用:

var foo = "bar";
var bar = "quux";
console.log(window[foo]);

但是,当然,全局定义的变量会附加到窗口对象上。函数的局部变量不是。是否有一些类似的方式以编程方式获取本地函数变量?

4 个答案:

答案 0 :(得分:1)

不,不要害怕。

请参阅:javascript locals()?

答案 1 :(得分:0)

首先,你为什么要这样做?做这样的事情还不够吗?

console.log(bar);

在JS的范围之外,局部变量不可用,但是如果你只想在你的函数内部访问它们,那么就不需要另一种方法来访问它们。

也许如果你告诉我们这背后的真正问题(不仅仅是这个例子),我们可以为你提供一个更好的选择,而不是寻找像window[foo]这样的东西。

答案 2 :(得分:-1)

据我所知,这是不可能的,我看不出它有什么用。但是,您可以使用for ... in结构找到任何对象的字段名称,如下所示:

for(field in obj){
   console.debug("Obj has a field named:"+field+" with value:"+obj[field]);
}

答案 3 :(得分:-1)

很长的死线程,但不会eval做这个工作。

(function() {
  var foo = "bar";
  var bar = "quux";
  altert(eval(foo));
})()