javascript回调函数

其实回调在我们工作中并不陌生

简单来说,回调函数可以理解为一个函数做为参数传递给另一个函数做处理,然后返回!(callback);

比如:forEach() 遍历方法

let array=['A','B','C','D'];

array.forEeach(function(item,index){

  console.log(item);

});

等等.

先说下回调会遇到的明显问题,闭包.一个函数在另一个函数里运行时,会形成闭包.闭包是可以读取包含它的函数(称包含函数)的作用域中的活动变量.

此时如果回调函数中存在this static 指向的问题,就要考虑上面的问题了,(解决办法: 通过call(),apply()解决作用域问题,接下来一篇简单用例子介绍下这两种方法该如何使用),

先来自定义封闭一个简单的自我介绍函数吧,

function introduce(name,age,sex,callback){
if(typeof name === "string" && typeof sex === "string" && typeof age === "number"){
console.log('我叫',name,'今年',age,'岁,我的姓别是',sex);
}else{
console.log('请传正确的参数');
return;
}
let introcs='我叫'+name+'今年'+age+'岁,我的姓别是'+sex;
callback(introcs);
}
introduce('程序员',0,'变性人',function(item){
console.log(item);
});
上面的这个简单的封闭函数,只要输入姓名,年龄,姓别,就可以写一句简短的介绍语句.
Tip:此时回调函数的参数值为什么可以拿到,也就是说在包含函数introduce里执行的时候,它读取了包含函数的参数值,这其实是闭包的效果,一个函数在另一个函数内执行时,被包含函数是可以访问包含函数的活动变量的.
这是我们常用的方式,其实也可以传一个带名称的函数,不仅可以是匿名函数做为形参
我们可以定义一个函数
let showIntro=function (item){
  console.log(item);
}
然后将变量showIntro传入到封装好的函数做为参数
 
posted @ 2017-10-23 00:20  编程让我快乐  阅读(771)  评论(0编辑  收藏  举报