Javascript回调函数的差异

时间:2014-04-05 19:21:33

标签: javascript jquery

我想知道2个回调函数实现之间的区别。

此:

$("#button").on('click', function () {
            //do something
});

具有已定义的功能。

$("#button").on('click', btnFunction);
function btnFunction() {
    //do something
}

与另一个相比,是否会产生任何影响?性能方面更快一点?

6 个答案:

答案 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)

在大多数情况下,将使用第一个,称为Anonymous Functions

当函数不仅在此处使用内联时,还将使用第二个函数,但也需要在其他地方重用。

但无论如何,这可能是个人偏好。

答案 4 :(得分:0)

您可以看到的唯一真正的区别是堆栈跟踪(例如,如果抛出异常)将更好,即使用第二个时更容易调试。

答案 5 :(得分:0)

只是重用能力。

在第二种情况下,如果需要,您可以在其他地方呼叫btnFunction()