当我尝试调试此代码时(http://jsfiddle.net/QWFGN/)
var foo = (function(numb) {
return {
bar: function() {
debugger;
return "something";
}
}
})(1);
foo.bar()
Chrome 中的开发者工具的行为不同于 Firefox 中的 Firebug 和 IE 中的开发者工具。问题是该变量在 Chrome 开发人员工具中numb
不可见debugger;
。但是,它在 Firebug 和 IE 中可见。如果我尝试numb
在 Chrome 的控制台中输入,我会得到:
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
作为响应。
所以,我的问题是:为什么只有谷歌浏览器看不到从未使用过的闭包变量?谷歌浏览器是否有自己的垃圾收集实现,或者它只与谷歌浏览器中调试工具的实现有关。