【问题标题】:Locate variables in scope?在范围内定位变量?
【发布时间】:2011-12-19 07:51:33
【问题描述】:

有没有办法在作用域内定位所有变量?例如

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

   console.log(LOCAL_SCOPE);
};

LOCAL_SCOPE 这样返回一个对象:

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

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

【问题讨论】:

  • 这是您遇到的问题导致的问题吗?如果是这样,请同时提出该问题
  • 这是不可能的。你需要这个做什么?
  • 问题不在答案中。
  • 这是可能的最佳答案,除非他在问题中添加上下文。
  • 第一句话,也许;由于其尺寸短,它将处于临界状态。但把它和你的问题结合起来,它就变成了一个对话。

标签: javascript variables scope local detect


【解决方案1】:

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

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

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

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2010-10-26
    • 2015-11-03
    • 2021-10-04
    • 1970-01-01
    相关资源
    最近更新 更多