审议关于如何参数传递给事件处理一些答案后,我一直在使用它,我下面所附的IIFE付诸实施。
给定的处理程序代码只是随意的展示变量的传递。
该代码似乎工作,但我不是100%肯定,我已经正确地构成的封闭 - 我需要以某种方式指定a
和b
作为参数传递给return function(){..}
?
let selectedElem = document.querySelector("#targetDiv");
let var1 = 0;
let var2 = 10
selectedElem.addEventListener('click', ( (e, a, b) => {
return function(e) {
console.log(e, a, b);
a += b;
console.log(a);
};
})(this.event, var1, var2));
不,你不能正确地传递事件。当你在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));