当前位置 : 主页 > 网页制作 > JQuery >

jquery – 看不到将函数作为(参数)而不是{do something}的逻辑

来源:互联网 收集:自由互联 发布时间:2021-06-15
我是 JavaScript和JQuery的新手,需要帮助才能看到这个例子中的逻辑: 如果我想在click事件上隐藏div,正确的解决方案如下所示: $(document).ready(function() { $('div').click(function() { $('div').hide();
我是 JavaScript和JQuery的新手,需要帮助才能看到这个例子中的逻辑:
如果我想在click事件上隐藏div,正确的解决方案如下所示:

$(document).ready(function() {
     $('div').click(function() {
         $('div').hide();
     });
});

但对我来说,如果它看起来像这样会更有意义:

$(document).ready() {
   $('div').click() {
       $('div').hide();    
   };
};

希望有人理解为什么我发现这令人困惑,并能解释我明显错过的东西.

UI编程本质上是 Event driven.

在此范例中,无论您使用何种语言,都必须定义将在事件发生时运行的事件处理程序.
在您的示例中,如果您使用不太紧凑的语法,则更具表现力:

$('div').on('click', reaction);

在纯OOP(例如java)中,反应将是实现特定接口的对象:

import java.util.Observer;
public class ResponseHandler implements Observer {
  ...
}
ResponseHandler reaction = new ResponseHandler();

现在,欢迎使用Javascript!

由于Javascript函数是Higher-order,将函数作为参数传递是一种常见的做法,它们被命名为callbacks.而且,当定义此回调函数时,javascript也非常冗长.

必须使用完整函数表达式来定义回调(命名或匿名).或者你可以转移到Coffescript化妆品来浏览这些函数定义(但它们只是语法糖,因为无论如何都存在函数定义).

您发明的{}语法或coffescript箭头语法实际上隐藏了实际的反应.

$('div').on('click', reaction);

javascript中的反应只是一个函数,一个回调函数.

现在,jQuery事件是reactor engine的一个实现,允许您的应用程序代码与实际引擎完全分离.这意味着jQuery应用程序是一组对事件的反应定义:

>只要文档准备就绪,请执行此操作.>每当用户点击div时,就这样做.>每当鼠标进入跨度,做任何事情.

网友评论