JavaScript中匿名函数作为包装器的必要性

Necessity of the anonymous function as wrapper in JavaScript

本文关键字:包装 必要性 函数 JavaScript      更新时间:2023-09-26

为什么这样做:

$("#oneButton").click(function () {
    alert("hello");
}); 

但这不起作用吗?

$("#oneButton").click(
    alert("hello");
); 

匿名函数路由给出一个稍后执行的函数。第二个例子仅仅是立即执行代码,从不等待单击事件的发生。

$.fn.click方法期望以您的名义调用一个函数,该函数将处理未来的单击事件。如果你给它一个数字,一个字符串,或者undefined,它将不做任何事情。

alert函数返回undefined,因此您的第二个示例无非是:

$("#oneButton").click(undefined);

请注意,您不需要使用匿名函数,而且在大多数情况下您可能不应该使用。您可以使用命名函数,这有助于以后的调试:

function handle ( event ) {
    alert( "Clicked" );
}
$("#oneButton").click(handle); // or .click(function handle ( event ) { ... });

在本例中,我们将函数引用传递给click事件作为处理程序。现在jQuery知道了我们的函数,它将在#oneButton上引发click事件时执行它。