第一种:把一个函数作为另外一个函数的参数,这个被当参数的函数就是回调函数?下面这例子f2是回调函数吗?
例:
function f1(fn){
  fn()
}
function f2(){
  alert(123)
}
f1(f2)第二种:一个自定义的函数,在发生事件的时候调用这个函数,这个函数叫回调函数。
function f1(e){}
obj.onclic=f1
是不是这两种都叫回调函数啊?

解决方案 »

  1.   

    软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。第一个只能说是同步,但使用了函数编程的特点,函数可以当成参数进行传递,函数传入后就立刻执行了。
    第二个传入函数,但没有执行,要等到click事件了才执行,可能不执行也可能执行多次。
      

  2.   


    回调函数是一种编程方式方法,不是写法,你的在写法上疑惑根本没有意义
    当你需要在某种情况下执行一些代码,但这种情况不受你控制时,你就可以使用回调函数的方式
    所以事件函数是回调函数,ajax回调函数也是,调用一些异步的接口获取返回值的方式也是,组件开发中支持一些事件或者说回调,即可以设计为用参数形式传递的函数,也可以设计为调用特定属性成员
      

  3.   

    function f1(e){
      alert(123)
    }
    obj.onclick=f1
    那这个f1的地址传给谁了,onclick是事件,也是一个函数吗?是说f1函数传给了onclick函数?
      

  4.   

    obj.onclick=f1
    将 f1 传递给 onclick 事件的处理函数(默认是空的)
    这是典型的回调函数的应用:通过回调函数改变对象的行为