请问这个js IIFE正确地传递一个事件处理函数的事件和参数?

问题描述 投票:1回答:1

审议关于如何参数传递给事件处理一些答案后,我一直在使用它,我下面所附的IIFE付诸实施。

给定的处理程序代码只是随意的展示变量的传递。

该代码似乎工作,但我不是100%肯定,我已经正确地构成的封闭 - 我需要以某种方式指定ab作为参数传递给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));
javascript
1个回答
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));
© www.soinside.com 2019 - 2024. All rights reserved.