当我尝试调试这段代码(http://jsfiddle.net/QWFGN/)时,出现了问题。
var foo = (function(numb) {
return {
bar: function() {
debugger;
return "something";
}
}
})(1);
foo.bar()
Chrome浏览器中的开发者工具与Firefox中的Firebug和IE中的开发者工具有所不同。问题在于变量numb
在debugger;
行上在Chrome开发者工具中不可见,但在Firebug和IE中可见。如果我尝试在Chrome控制台中键入numb
,则会得到以下结果:
ReferenceError: numb is not defined
numb
在这个闭包中是可见的,如果我改变代码为 (http://jsfiddle.net/QWFGN/1/)。
var foo = (function(numb) {
return {
bar: function() {
debugger;
console.log(numb);
return "something";
}
}
})(1);
foo.bar()
numb
现在在 Chrome 中也可见,我可以得到值 1
作为响应。
所以,我的问题是:为什么只有 Google Chrome 看不到从未使用的闭包变量? Google Chrome 是否有自己的垃圾回收实现,或者它只与 Google Chrome 的调试工具实现相关。