在范围内找到变量?

时间:2011-11-01 08:31:07

标签: javascript variables scope local detect

有没有办法找到范围内的所有变量? e.g。

var localScope = function() {
    var var1 = "something";
    var var2 = "else...";

   console.log(LOCAL_SCOPE);
};

其中LOCAL_SCOPE返回如下对象:

{
    var1: "something",
    var2: "else..."
}

我知道可以通过制作本地对象来做到这一点。但我寻求一种方法来定位所有变量,而不知道它们是否存在。

1 个答案:

答案 0 :(得分:1)

没有可靠的方法来获取所有局部变量。最接近的是获得函数的来源。

如果您不知道对当前函数的引用(例如名称),则必须使用已弃用的(在ECMAScript 5中禁用)argument.callee

当您获得对该函数的引用时,您必须通过非标准toSource()方法或.toString()获取源的字符串。

获取字符串后,您必须获取所有变量名称,例如,使用RegExp。将此方法与循环window结合使用,可以获得在全局范围中定义的函数的所有局部变量。然后,必须使用eval(!!!)来获取对局部变量的引用。

<小时/> 简而言之,您不应该尝试寻找一种定位所有局部变量的方法,因为没有可靠的方法来实现这一点。