事件侦听器不能使用预定义函数作为参数

时间:2017-09-05 13:08:17

标签: javascript javascript-events binding addeventlistener

我是初学者,我刚试过这样做:

ul.addEventListener("click", function(e) {
  console.log("Hi");
});

这很有效。我知道这是一个匿名函数。但是,当我尝试事先给出这个函数的定义并将其传递给它时,它就不会起作用了:

function myFunc(e) {
  console.log("Hi from myFunc");
}

ul.addEventListener("click", myFunc(e));

我不明白其中的区别。错误如下:

  

未捕获的ReferenceError:未定义e       在javascript.js:29

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

传递函数的引用,而不是它的执行结果。它将在click事件被触发时调用您的函数。它与您通过匿名函数相同,在2种情况下,您只传递函数的引用。

function myFunc(e) {
  console.log("Hi from myFunc");
}

ul.addEventListener("click", myFunc);