Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么事件处理程序函数在变量指向null后仍然有效?_Javascript_Dom - Fatal编程技术网

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(“鼠标悬停”,侦听器);
}();