[JavaScript]解决addEventListener绑定同样的函数多次执行/解决函数绑定带参数却自动执行

  Eventlistener since you define new function(no matter it looks the same, it is different object).

To use the same handler each time you must define it outside bindEvents and pass it by name (by reference).

首先就是当你会使用重复绑定的handler(同一个作用)的时候,不要写匿名函数,如

 element.addEventListener('click', (e) => {
             
              //....
};

那样当你再次执行的时候,其实已经是两个对象了,最好的方法是给它用名字传递并且写在外面

然后就是函数会自动执行

 node.addEventListener('click', handlejump());//错误
 node.addEventListener('click', handlejump);//正确

 如果你要带参数,用onclick

 node.onclick = function () {
          cur.handlejump(jumpList, index, componentId); // pass param but not be executed
  };

 handlejump = (jumpList, index, componentId) => {
    //...

}

 

你可能感兴趣的:(前端)