私がそのような「魔法の」機能を持っているとしましょう...(魔法は説明されます)
var arr = ['hello','I','am','in','an','array'];
(function() {
var z = document.getElementById('z');
//before edit: a = arr;
//let's leak memory... for fun!
z.onclick = function () {
var something = ...; //something, the uglier the better :P
//before edit: a.push(something);
arr.push(something);
something = null;
};
//now lets say by doing so I 'magically' fix my memory leak
//before edit: a = z = null;
z = null;
}());
しかし、代わりにこれを行うとしたらどうなりますか...
//instead of a = z = null;
return null;
nullを自己呼び出し関数に戻すと、すべてのローカル変数(a、z)がガベージコレクション用にマークされますか、それともブラウザー内で参照が残っているため、メモリを消費しますか?
注:私は、とりわけie7のようなレガシーブラウザを考慮に入れようとしています。また、私は自分自身にJavaScriptを教えようとしているので、これはあまり意味がないかもしれません。