在回顾了有关如何将参数传递给事件处理程序的一些答案之后,我已经使用下面附加的IIFE实现了它。
给定的处理程序代码只是任意的,以演示变量的传递。
该代码似乎可以正常工作,但是我不能100%地确定我已经正确形成了闭包-我是否需要以某种方式将a
和b
指定为{{1} }?
return function(){..}
答案 0 :(得分:3)
否,您没有正确传递事件。在IIFE中创建处理程序时,没有当前事件,并且全局this.event
应该未定义。您甚至没有使用IIFE的e
参数,因为您正在使用实际处理程序的e
参数对其进行阴影处理。您不需要外部e
,只需将其放下即可:
let selectedElem = document.querySelector("#targetDiv");
let var1 = 0;
let var2 = 10
selectedElem.addEventListener('click', ((a, b) => (e) => {
console.log(e, a, b);
a += b;
console.log(a);
})(var1, var2));