js回调函数的两种写法

回调函数

应用程序时常会通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。

总结一下回调函数的两种写法与用法:

  1. 非参数回调函数:
    这种回调比较简单 ,往往只需传一个函数名就可以。
function demo(arg,callback){
}

再来看看怎么写这个函数 在js中是可以通过函数名来调用函数的
例如:

var aa = function (){
          var str = "hello world"
	   console.log(str); // hello world  匿名函数可以通过变量a来调用



   }

aa();

所以说,demo函数可以通过callback()来调用
如果说没有传参数或者传入的不是函数对象 我们可以判断参数以及其类型

 function demo(one,callback){
    	console.log(one)//a
    	if(callback && callback instanceof new Function)//判断是否传参,以及参数的类型
    		callback();
    }
    demo('a',function(){//传入的参数值,函数
    
    })

2.带参数的回调函数

这类函数使用的比较多,例如在jQuery中宾利数组或对象的函数each(),接受一个函数或数组和一个回调函数,来完成对遍历结果的输出。
如果使用1.中的方法,则不能完成传参。
解决方法:

function each(arr,callback){
       for(var i = 0,l = arr.length; i < l ; i++ ){       
     
      }
}

上述代码变量里了数组,但是不能通过回调函数来使用,callback函数可以解决

 function each(obj,callback){
	for(var i=0,l = obj.length;i<l;i++){
		callback.call(obj,i,obj[i]); //用callback来替换obj,所以实现为callback(i,obj[i]),正好将数组遍历;
	}
}
//为了证明函数的正确性,我们做如下测试
 
var json = [6,5,3,2,8,4];
 
each(json,function(i,n){
    alert(i+","+n);
});

以上是自己总结的calllback回调的两种写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值