Gre*_*gir 1 javascript jquery anonymous-function
在尝试同时掌握jQuery和JavaScript的一些基础知识时,我有点困惑为什么jQuery将匿名函数作为参数.像这样:
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
Run Code Online (Sandbox Code Playgroud)
与此相反:
$( "#target" ).click(alert("You clicked it."));
Run Code Online (Sandbox Code Playgroud)
在jQuery自己的"101"指南中,他们指出"将函数作为参数传递是jQuery中非常常见的习惯用法".但他们似乎没有解释原因.它只是为一组表达式提供一个包装器,或者(我怀疑)远不止于此?
要回答您的具体问题,原因是因为此代码:
$( "#target" ).click(alert("You clicked it.");
Run Code Online (Sandbox Code Playgroud)
执行以下操作:
alert使用"You clicked it."as参数调用alert调用的结果(即undefined)作为单击处理程序绑定#target.换句话说,alert立即调用并undefined绑定为事件处理程序,这没有任何意义.
而使用第一个代码片段:
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
Run Code Online (Sandbox Code Playgroud)
alert( "Handler for .click() called." );]有关匿名函数的详细信息,请参阅此问题.
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |