很多人还在这么做:element.addeventlistener ('type ',obj . method . bind(obj))element . addevent listener(' type ',function(event){ })element . addevent listener(' type ',(event)= >;{})以上例子都是创建一个匿名事件监控句柄,不需要的时候不能删除。 当你不需要句柄时,这可能会导致性能问题或不必要的逻辑问题,但它是由客户或事件冒泡意外触发的。 更安全的事件解决方案如下:const handler = function(){ console . log(" tada!"} element . addevent listener(" click ",handler)//之后以element . remove event listener(" click ",handler)命名的函数移除自己的element . addevent listener(' click ',函数click(e){ if(some condition){ return e . current target . remove event listener(' click ',click);}});更好的方法写函数handle event (event name,{onelement,with callback,usecapture = false},this arg){ console . log(on element);const element = on element | | document . document element;函数处理程序(事件){ if(type of with callback = = = ' function '){ with callback . call(this arg,event);} } handler . destroy = function(){ return element . remove event listener(event name,handler,use capture);};element . addevent listener(event name,handler,use capture);返回处理程序;} const handle click = handle event(' click ',{ on element:document . getelementbyid(' main '),with callback:(event)= & gt;{ console.log('Tada!');},});handle click . destroy();