5

鉴于:

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

我正在寻找插入注释时会产生 bar 值的代码。举例来说,这样的事情在全球范围内有效:

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

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

4

4 回答 4

1

不,怕不是。

请参阅:javascript locals()?

于 2009-04-13T21:58:11.343 回答
0

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

console.log(bar);

局部变量在 JS 的范围之外不可用,但如果您尝试仅在函数内部访问它们,则无需其他方法来访问它们。

也许如果您告诉我们这背后的真正问题(不仅仅是这个例子),我们可以为您提供比寻找类似window[foo].

于 2009-04-13T21:44:47.270 回答
0

很长的死线程,但不会 eval 完成这项工作。

(function() {
  var foo = "bar";
  var bar = "quux";
  altert(eval(foo));
})()
于 2012-12-16T10:49:22.303 回答
-1

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

for(field in obj){
   console.debug("Obj has a field named:"+field+" with value:"+obj[field]);
}
于 2009-04-13T21:47:27.997 回答