这段代码跟循环引用存在关联吗?现代浏览器中,在不需要继续监听click的时候,还需要调用removeEventListener吗?
var element = document.getElementById('button');
function onClick(event) {
element.innerHTML = 'text';
}
element.addEventListener('click', onClick);
这段代码跟循环引用存在关联吗?现代浏览器中,在不需要继续监听click的时候,还需要调用removeEventListener吗?
var element = document.getElementById('button');
function onClick(event) {
element.innerHTML = 'text';
}
element.addEventListener('click', onClick);
10 回答11.1k 阅读
6 回答6.8k 阅读✓ 已解决
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
1.循环引用的情况很多,但你这个不是。循环引用的情况可参考:Circular Reference in JavaScript
2.如果你有销毁时机,一定要记得主动
removeEventListener
。通常来说绑定事件的DOM销毁后,事件监听也会被销毁。但不同浏览器,比如手机浏览器,不同的内存回收机制,可能带来的结果会有所区别。为了避免不必要的麻烦,能主动销毁就主动销毁。