on,addEventListener 绑定的事件会随着DOM元素的销毁而在内存中被销毁吗?

作者站长头像
站长
· 阅读数 13
<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(DOM0DOM2两种方式)。当foo函数执行完毕,DOM元素被销毁,同时引用linkgc。请问handleClick事件处理程序是否也会被gc呢?是否需要采用link.onclick=nulllink.removeEventListener方式对事件处理程序解绑?

回复
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容