gpt4 book ai didi

javascript - 这个 JS IIFE 是否正确地为事件处理程序传递了事件和参数?

转载 作者:行者123 更新时间:2023-11-30 11:08:55 24 4
gpt4 key购买 nike

在回顾了一些关于如何将参数传递给事件处理程序的答案之后,我使用下面附上的 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));

最佳答案

不,您没有正确传递事件。在 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));

关于javascript - 这个 JS IIFE 是否正确地为事件处理程序传递了事件和参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54538238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com