on,addEventListener 绑定的事件会随着DOM元素的销毁而在内存中被销毁吗?
<body>
<div id="wrap">
<span id="link">点击</a>
</div>
<script>
function foo() {
let wrap = document.getElementById('wrap'),
link = document.getElementById('link');
function handleClick() {
alert('clicked');
}
link.onclick = handleClick; //
// link.addEventListener('click', handleClick, false);
wrap.removeChild(link);
}
foo();
</script>
</body>
如上述代码,在foo函数中为link指向的DOM元素,绑定事件处理程序handleClick
(DOM0
和DOM2
两种方式)。当foo函数执行完毕,DOM元素被销毁,同时引用link
被gc
。请问handleClick
事件处理程序是否也会被gc
呢?是否需要采用link.onclick=null
或link.removeEventListener
方式对事件处理程序解绑?
回复
1个回答
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容