事件监听器,闭包引用函数指向
我遇到闭包的事件监听器无法移除事件的情况,最后发现 add 时和 remove 时闭包访问的并不是同一个函数,这是为什么,具体见 remove 里的 console.log
let addHide = null
function clickListener() {
function hide() {
console.log('hide exc')
}
function add() {
addHide = hide
document.addEventListener('click', hide, false)
}
function remove() {
console.log(hide === addHide);
document.removeEventListener('click', hide, false)
}
return {
add,
remove
}
}
clickListener().add()
clickListener().remove()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为每次clickListener()都会生成一个新的hide,你应该
问题为什么发不出去