2

クロージャー内のコードがスコープ チェーンの変数 & メソッド & 引数にアクセスできることは理解していますが、それらのいずれも使用しない場合はどうなりますか? それらの変数はまだ保持されていますか?

このケースを考えてみましょう:

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 アプリについて話しています (ほとんどの場合)。

4

1 に答える 1