假设我有一个看起来像这样的代码块......
$(function(){
var Foo = "Thing";
var Bar = "Other Thing";
var Bag = new Widget({name: "Some Thing", color: "Purple"});
});
有没有办法在Chrome控制台中检查或检索这些变量/对象?我想我可能会尝试使用Chrome控制台作为太多的REPL,但我很好奇是否可能。
- 修改:抱歉,我应该提供更多信息。我知道我可以添加断点或包含调试器调用。我更感兴趣的是在之后看到变量/对象一切都已完成。
答案 0 :(得分:2)
我认为这是不可能的,因为这些变量是匿名函数的本地变量。
您可以暂时执行以下操作来检查函数内的值:
var Foo;
$(function(){
Foo = "Thing";
var Bar = "Other Thing";
var Bag = new Widget({name: "Some Thing", color: "Purple});
});
从这里,您可以访问Foo
并查看其中的值。
答案 1 :(得分:1)
变量的作用域是函数,这意味着它们不能在它外面访问,除非它们被明确地传递出去。以下是我能想到的一些选择:
您可以在外部作用域中声明相同名称的变量,例如window
。要小心,因为如果这些变量名在其他函数中使用,它们现在都将使用相同的“全局”副本,并且一切都可能中断。
您可以在最终返回匿名函数之前添加“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
事件,你永远不会知道)。
只需将值记录到控制台即可。这适用于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;
});