javascript eventListener闭包:这是如何工作的?

时间:2018-04-21 17:31:45

标签: javascript event-handling closures parameter-passing addeventlistener

我正在尝试在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'是来自浏览器的事件对象???

0 个答案:

没有答案