2.5 JavaScript的Callback

jQuery中使用了大量Callback,中文译为“回调函数”。回调函数是通过函数指针调用的函数,机制是把调用者与被调用者分开,调用者不用关心谁是被调用者。这个概念读起来很抽象。我们来看一段jQuery代码:

$("button").click(function(){ $("p").hide(1000); });

这段代码的意思是单击按钮时实现p标签的隐藏。JavaScript的语句按照次序逐一执行,动画之后的语句可能会产生错误或页面冲突,因为动画还没有完成。此时,Callback就可以发挥它的作用,例如:

$(selector).hide(speed, callback);

这里的callback参数是一个函数,是在hide操作完成后被执行的函数。更改前面的代码:

$("p").hide(1000, function(){ alert("The paragraph is now hidden"); });

这样就能保证hide动画在加载完后才执行alert语句。这就是callback的意义。

在jQuery事件处理机制中,我们会发现大量callback的痕迹,例如:

        $("body").click(function(event) {
          console.log("单击对象是: " + event.target);
        });

这个回调函数带一个参数event,用来处理操作的对象。还有回调函数用于返回值,例如:

        $("#myform").submit(function() {
          return false;
        });