如何在匿名函数中检查变量?

时间:2013-04-04 19:37:55

标签: javascript google-chrome

假设我有一个看起来像这样的代码块......

$(function(){
    var Foo = "Thing";
    var Bar = "Other Thing";
    var Bag = new Widget({name: "Some Thing", color: "Purple"});
});

有没有办法在Chrome控制台中检查或检索这些变量/对象?我想我可能会尝试使用Chrome控制台作为太多的REPL,但我很好奇是否可能。

- 修改:抱歉,我应该提供更多信息。我知道我可以添加断点或包含调试器调用。我更感兴趣的是在之后看到变量/对象一切都已完成。

2 个答案:

答案 0 :(得分:2)

我认为这是不可能的,因为这些变量是匿名函数的本地变量。

您可以暂时执行以下操作来检查函数内的值:

var Foo;    

$(function(){
    Foo = "Thing";
    var Bar = "Other Thing";
    var Bag = new Widget({name: "Some Thing", color: "Purple});
});

从这里,您可以访问Foo并查看其中的值。

答案 1 :(得分:1)

变量的作用域是函数,这意味着它们不能在它外面访问,除非它们被明确地传递出去。以下是我能想到的一些选择:

  1. 您可以在外部作用域中声明相同名称的变量,例如window。要小心,因为如果这些变量名在其他函数中使用,它们现在都将使用相同的“全局”副本,并且一切都可能中断。

  2. 您可以在最终返回匿名函数之前添加“variable-collector”语句:

    var collector = [];
    
    $(function () {
       var Foo = "Thing",
          Bar = "Other Thing",
          Bag = new Widget({name: "Some Thing", color: "Purple"});
       collector.push({"anonymousfunction1": {Foo: Foo, Bar: Bar, Bag: Bag}});
       return something;
    });
    

    然后在执行结束时,您可以检查collector变量中的所有内容。我让collector成为一个数组,因为我认为你可能有多个想要了解的匿名函数,或者函数可以被多次调用(尽管它看起来像jQuery ready事件,你永远不会知道)。

  3. 只需将值记录到控制台即可。这适用于Chrome和Firefox(按F12),可能适用于IE的更高版本:

    $(function () {
       var Foo = "Thing",
          Bar = "Other Thing",
          Bag = new Widget({name: "Some Thing", color: "Purple"});
       console.log("Foo", Foo, "Bar", Bar, "Bag", Bag);
       return something;
    });