};}なぜでしょう?これは、Javasciprtのガベージコレクションは「マーク&スウィープ方式」が使われているのですが、DOMオブジェクトだけは内部で「参照カウンタ方式」を使っているために起きている問題です。DOMオブジェクトがJavaSciprtオブジェクトを参照していて、そのJavascriptオブジェクトでもDOMオブジェクトを参照していたりすると、循環参照になってメモリから解放されずに残ってしまうわけです。}を参照していて、クロージャでも内部でelementを参照しているため、メモリリークが発生してしまいます。このクロージャはelementオブジェクトを参照してないように見えますが、javascriptのクロージャとローカル変数で書いたように、クロージャ内側でelementを使っていようがいまいが、同じスコープで宣言されている全てのローカル変数をクロージャ内に保持してしまう特性上、elementもきっちり参照しています。(C)の例では、DOMオブジェクトをローカル変数として定義していないのでクロージャ内でid='foo'のDOMオブジェクトは参照されていません。したがってメモリリークは発生しません。null;}このようにelementをnullで消しておけば、参照が切れてメモリリークを防げます。}を使うとスマートに書けたりします。);PerlやPythonから入ってる人は、なぜ(A)(B)が循環参照になるのか理解しづらいかもなので、書いてみました。なんか他にも書いておきたいことあったけど、長くなりそうだからもういいや。