有没有办法找到范围内的所有变量? e.g。
var localScope = function() {
var var1 = "something";
var var2 = "else...";
console.log(LOCAL_SCOPE);
};
其中LOCAL_SCOPE
返回如下对象:
{
var1: "something",
var2: "else..."
}
我知道可以通过制作本地对象来做到这一点。但我寻求一种方法来定位所有变量,而不知道它们是否存在。
答案 0 :(得分:1)
没有可靠的方法来获取所有局部变量。最接近的是获得函数的来源。
如果您不知道对当前函数的引用(例如名称),则必须使用已弃用的(在ECMAScript 5中禁用)argument.callee
。
当您获得对该函数的引用时,您必须通过非标准toSource()
方法或.toString()
获取源的字符串。
获取字符串后,您必须获取所有变量名称,例如,使用RegExp。将此方法与循环window
结合使用,可以获得在全局范围中定义的函数的所有局部变量。然后,必须使用eval
(!!!)来获取对局部变量的引用。