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

时间:2014-03-17 01:55:09

标签: javascript wrapper anonymous-function

为什么这样做:

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

但这不起作用?

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

1 个答案:

答案 0 :(得分:3)

匿名函数路由提供了一个稍后执行的函数。第二个例子只是立即执行代码 ,永远不会等待点击事件发生。

$.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事件时执行它。