谈谈Js回调函数的那些事儿

今天,来谈谈Js函数的一大特点——回调函数。

什么是回调函数?

官方解释:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

翻译过来也就是

回调就是将一个函数(a)作为另一个函数(b)的参数,b执行结束后再执行a过程。

这话说的是相当拗口啊!其实啊,别看这段话特别的绕,但实践到代码上却是简单明了,下面直接上例子:

var fn = function(callback){
	alert('fn');	
	if(typeof(callback) == 'function'){
		callback();
	}
}

这里的callback就是定义中的a函数,fn就是定义中的b函数,这样看来是不是一目了然了呢!

通常callback的实现有两种方式:匿名函数调用、显式函数调用

先看匿名函数调用:

		fn(function(){
			alert('callback'); //==>fn==>callback
		});

再看显式函数调用:

                var callbackFn = function(){
			alert('callbackFn');
		}
		fn(callbackFn);//==>fn==>callbackFn

看到这里,你也许会发出“这回调函数也太弱了吧,就这点能耐!”这里,我只能表示“同学,你还是图样图森破!”

下面,我将展示一个利用回调实现闭包的功能,听起来是不是特别高大上?!

 

首先,我们来回忆一下闭包的实现方式:

		var closure = function(){
			var privateVar = 0;
			return function(){
				privateVar++;
				return privateVar;
			}
		}
		var fn = closure();
		alert(fn());==>1
		alert(fn());==>2

闭包的详细内容请参阅我的博文《谈谈Js闭包的那些事儿》

那通过回调怎样来实现闭包的功能呢?

		var fn = function(callback){
			var fnvar = {
				name : 'fn',
				value : 'test1'
			};
			if(typeof(callback) == 'function'){
				callback(fnvar);
			}
		}
		var callbackFn = function(fn){
			alert(fn.name + ':' + fn.value);//==>fn:test1
		}
		fn(callbackFn);

这样实现的闭包功能是不是更简单易懂呢,实话说,用这种方法来异步操纵数据还是蛮好有的。

 

完结!







  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值