3

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

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

有没有办法在 Chrome 控制台中检查或检索这些变量/对象?我想我可能试图将 Chrome 控制台用作 REPL,但我很好奇它是否可能。

-编辑:对不起,我应该包含更多信息。我知道我可以添加断点或包含调试器调用。在一切运行完成,我对查看变量/对象更感兴趣。

4

2 回答 2

2

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

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

var Foo;    

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

从这里您可以访问Foo并查看里面的值。

于 2013-04-04T19:44:58.677 回答
1

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

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

  2. 您可以在匿名函数的最终返回之前添加“变量收集器”语句:

    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一个数组,因为我认为您可能有多个想要了解的匿名函数,或者该函数可以被多次调用(尽管它在我看来就像一个 jQueryready事件,但您永远不知道)。

  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;
    });
    
于 2013-04-04T19:50:39.340 回答