Javascript 将函数用作回调还是存储它?

Javascript 将函数用作回调还是存储它?,javascript,function,Javascript,Function,我能做到 var element; // some html node element.addEventListener("click", function() { alert(1); }, false); 或者这个, var clickFunc = function() { alert(1); } element.addEventListener("click", clickFunc, false); 我做哪一个重要吗?我在互联网上读到了这两种方法的不同之处,我很难找

我能做到

var element; // some html node

element.addEventListener("click", function() {
     alert(1);
}, false);
或者这个,

var clickFunc = function() {
    alert(1);
}

element.addEventListener("click", clickFunc, false);

我做哪一个重要吗?我在互联网上读到了这两种方法的不同之处,我很难找到原因。

还有第三种选择:

function clickFunc() {
  alert(1);
}

element.addEventListener("click", clickFunc, false);
这里的优点是,如果抛出异常,名称(“clickFunc”)将显示在堆栈跟踪中

如果您确实喜欢键入,也可以这样做:

var clickFunc = function clickFunc() {
  alert(1);
};
或简称:

element.addEventListener("click", function clickFunc() {
  alert(1);
}, false);

但是那些在较旧的浏览器中都有。

就性能或功能而言,什么都没有,但是如果你想要任何可重用性,那么第二种选择就更好了

var clickFunc = function() {
    alert(1);
}

element.addEventListener("click", clickFunc, false);
element1.addEventListener("click", clickFunc, false);

两者都在做同样的事情。只是使用匿名函数,您将无法调用removeListener。

我个人更喜欢第二个选项。它更易于重用和测试,您还可以使用
removeEventListener
。在性能和功能方面没有任何区别

我认为在这种情况下没有任何区别。一个明显的优点是,您可以使用函数引用调用
removeEventListener
。如果您有一个clickfunction要应用于不同的元素,第二个可能会很有帮助。你可以重用这个函数。我没有想到第三种选择,我想我会坚持你的第一个例子,这显然是最好的选择,谢谢你,这对我帮助很大。