これはクロージャーによる循環参照を起こしているということなのですが、どういう意味なのか説明して頂けませんでしょうか?_function test() { var elt = document.getElementById(’i0’); elt.src = ’t2.png’; elt.onclick = function() { location.href = ’t2.html’; } }
eltはelt.onclickを参照している。elt.onclickは変数eltが使える環境で作られたから、eltを参照できる。(このことをクロージャーと言うらしい)つまり、elt.onclickはeltを参照している。ここで循環参照になっている。循環参照が発生すると、古いIEではメモリリークが発生したらしいが、今の時代気にする必要はない。
ちなみに、循環参照を断ち切りたければ、elt.onclickを設定したあとにelt=nullとすればいい。
みんなの回答 1 件
eltはelt.onclickを参照している。
elt.onclickは変数eltが使える環境で作られたから、eltを参照できる。(このことをクロージャーと言うらしい)
つまり、elt.onclickはeltを参照している。
ここで循環参照になっている。
循環参照が発生すると、古いIEではメモリリークが発生したらしいが、今の時代気にする必要はない。
ちなみに、循環参照を断ち切りたければ、elt.onclickを設定したあとにelt=nullとすればいい。
関連するトピックス