我正在尝试在javascript中获取单击处理函数以允许多个参数,并且仍然能够从浏览器访问事件对象。
在堆栈上挖掘,我发现了这个
https://stackoverflow.com/a/8941670/8140320
我在小提琴中测试它并且它有效。我不明白为什么。
https://jsfiddle.net/xzpzjLs1/10/
我的JS代码在小提琴中:
div=document.querySelector('div');
data = "data";
let testFunction = function (data) {
return function (event){
console.log(event);
console.log(data);
};
}
div.addEventListener('click', testFunction(data));
我读了关于闭包的这篇文章,它有所帮助,但仍然不明白。
https://medium.com/dailyjs/i-never-understood-javascript-closures-9663703368e8
我认为我知道的是:
当发生点击时,执行testFunction并传递数据。
testFunction返回一个函数(它创建一个闭包,用于存储范围内的局部变量)
'data'变量在闭包中,因为它是在
中传递的参数但是'event'怎么样?返回函数如何知道'event'是来自浏览器的事件对象???