Javascript 为什么事件处理程序函数在变量指向null后仍然有效?
在Javascript 为什么事件处理程序函数在变量指向null后仍然有效?,javascript,dom,Javascript,Dom,在inputBox=null之后,当我将鼠标移到inputBox上时,\u countNum仍然添加1。我以为会停下来 !函数(){ var _countNum=0; var inputBox=document.getElementsByTagName(“输入”)[0]; addEventListener(“鼠标悬停”,函数(){ log(“countNum:+_countNum++”); 控制台日志(输入框); inputBox=null; }); }(); 事件侦听器附加到DOM中的元素。
inputBox=null
之后,当我将鼠标移到inputBox
上时,\u countNum
仍然添加1。我以为会停下来
!函数(){
var _countNum=0;
var inputBox=document.getElementsByTagName(“输入”)[0];
addEventListener(“鼠标悬停”,函数(){
log(“countNum:+_countNum++”);
控制台日志(输入框);
inputBox=null;
});
}();代码>
事件侦听器附加到DOM中的元素。该变量只是暂时用于保存对元素的引用。重新分配变量不会改变元素本身
如果要停止事件侦听器,请使用removeEventListener
。要做到这一点,您需要使用一个命名函数,这样您就可以在addEventListener
和removeEventListener
中引用它
!函数(){
var _countNum=0;
var inputBox=document.getElementsByTagName(“输入”)[0];
函数侦听器(){
log(“countNum:+_countNum++”);
控制台日志(输入框);
removeEventListener(“mouseover”,listener);
}
inputBox.addEventListener(“鼠标悬停”,侦听器);
}();代码>