我想知道2个回调函数实现之间的区别。
此:
$("#button").on('click', function () {
//do something
});
具有已定义的功能。
$("#button").on('click', btnFunction);
function btnFunction() {
//do something
}
与另一个相比,是否会产生任何影响?性能方面更快一点?
答案 0 :(得分:2)
第一个使用匿名函数,第二个不使用。两者都没有区别。
请参阅: Why do you need to invoke an anonymous function on the same line?
答案 1 :(得分:2)
有些人更喜欢第二种形式,因为它在使用调试器和跟踪时提供了一个函数名称,但是有一些方法可以在第一种形式中获得相同的功能。
如果您根据不断变化的条件附加和删除事件处理程序,则第二种形式 更容易维护。
答案 2 :(得分:2)
根本没有区别,并且没有任何一个都没有性能问题。唯一的区别是,在其中一个中,您将回调函数定义为匿名函数,这样您就无法重用它。
另一种方式,你在其中定义它并命名它,然后将其作为回调传递,你可以定义一个函数,以后可以在代码的另一部分重用它。
例如:如果你想在文档准备就绪时做某事,然后在按某个按钮时做同样的事情就可以使用这样的东西:
function getData() {
//do something
}
$(function() {
// Call the function once the DOM is ready
getData();
});
// Call the same function when the button is clicked
$("#refresh_button").on('click', getData);
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以看到的唯一真正的区别是堆栈跟踪(例如,如果抛出异常)将更好,即使用第二个时更容易调试。
答案 5 :(得分:0)
只是重用能力。
在第二种情况下,如果需要,您可以在其他地方呼叫btnFunction()
。