クロージャー内のコードがスコープ チェーンの変数 & メソッド & 引数にアクセスできることは理解していますが、それらのいずれも使用しない場合はどうなりますか? それらの変数はまだ保持されていますか?
このケースを考えてみましょう:
function f(){
var a=[];
for(var i=0;i<1000000;i++) a.push({});
return function(){
alert('Hi');
};
}
var x = f();
a
クロージャーが使用していなくても、変数はメモリに保持されますか?
ありがとう
更新:「些細な」閉鎖については答えがないようです。では、すべてのクロージャ (何も実行しない場合でも) の引数、変数、内部関数を含むスコープ チェーンのすべてのメソッドを (クロージャがガベージ コレクションされるまで) メモリに保持できると仮定するのは公正でしょうか?
また、node.js に関する「重複の可能性がある」質問について - 私の知る限り、node.js は、Google の v8 JS エンジンに基づく専用環境でのみ実行されます。ここでは、最新のブラウザーで実行される Web アプリについて話しています (ほとんどの場合)。