-
ID:NoV1Mz さんの質問

これはクロージャーによる循環参照を起こしているということなのですが、どういう意味なのか説明して頂けませんでしょうか?
_
function test() {
var elt = document.getElementById(’i0’);
elt.src = ’t2.png’;
elt.onclick = function() {
location.href = ’t2.html’;
}
}

みんなの回答 1 件

ID:J7XFvl さんの回答

eltはelt.onclickを参照している。
elt.onclickは変数eltが使える環境で作られたから、eltを参照できる。(このことをクロージャーと言うらしい)
つまり、elt.onclickはeltを参照している。
ここで循環参照になっている。
循環参照が発生すると、古いIEではメモリリークが発生したらしいが、今の時代気にする必要はない。

ちなみに、循環参照を断ち切りたければ、elt.onclickを設定したあとにelt=nullとすればいい。

最終更新日:2016-02-20 (1,471 views)

関連するトピックス

ページ上部に戻る