JavaScript回调函数

最近一直在纠结JavaScript的回调函数(callback),什么是回调函数,回调函数什么时候执行,查了很多资料,大部分都解释清楚了这两个问题,但是看完以后还是不知道,一头雾水,尤其是对于一个新手,怎么样简单粗暴的学会使用这个东西很重要。不得已还是得继续研究,总算是学会怎么使用了。

首先来定义一个带回调函数的函数

var test= function(callback)
{
    var a = 1,
        b = 2,
        c = 3;
    var t = callback(a,b,c);
    return t + 10;
};

在这里,callback就是一个回调函数,这个名义可以随便起。通过var t=callback(a,b,c)这里我们可以看出,callback这个函数能够给拿到主方法中的a、b、c这三个参数,所以我们在调用这个test方法的时候这个callback可以调用这三个参数,所以我们可以这样执行test方法:

var result = test(function(m,n,k){
	return m+n+k;
})

执行完毕后,result=16。执行到这里,我们可以看出这个回调函数有什么用了,在程序需要执行他的地方执行相应的方法,这个方法是一个动态的,就是可以有不同的实现方式,具体怎么实现需要根据情况来定,比如说我这里我还可以这么调用

var result = test(function(m,n,k){
	return m*n+k;
})

这个程序执行完成后result=15。相比到这里基本可以简单粗暴的使用它了,其实一直让我纠结的地方是这个回调函数的参数是怎么来的,很多次使用它的时候我都不知道它的参数是哪里来的,现在通过程序可以看出来了,其实这个参数是主方法传进来的,我们需要定义哪些参数是需要根据主方法中调用这个回调函数的时候传递了哪些参数,这个参数的名字是任意的,就像在上面的例子中我使用了m、n、k,也可以用其他任意的名字,这就是一个形参,真正执行的过程中使用的是主方法中的a、b、c。所以到现在可以理解回调函数了,为什么叫回调,其实可以这么理解,正常来讲,我们是先定义一个方法再去调用它,现在是反过来的,我们先在主方法中调用这个方法,方法的定义则是后来根据需要定义,所以叫做回调。例如ajax的执行过程中,执行成功和失败都会有一个回调函数,当ajax调用成功以后会调用success的回调函数,在这个回调函数中,主方法将请求到的一些数据传给了回调函数,所以我们就可以通过回调函数来获取到这个数据,然后可以进行一些其他的操作。

posted @ 2017-10-25 21:34  会写代码的放羊娃  阅读(424)  评论(0编辑  收藏  举报