このコードをデバッグしようとすると ( http://jsfiddle.net/QWFGN/ )
var foo = (function(numb) {
return {
bar: function() {
debugger;
return "something";
}
}
})(1);
foo.bar()
Chrome の開発者ツールは、Firefox の Firebug や IE の開発者ツールとは動作が異なります。問題は、行のnumb
Chrome 開発者ツールで変数が表示されないことです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
、レスポンスとして値を取得できます。
だから、私の質問は: Google Chrome だけが使用されていないクロージャー変数を認識しないのはなぜですか? Google Chrome にはガベージ コレクションの独自の実装がありますか、それとも Google Chrome のデバッグ ツールの実装にのみ関連していますか。