zoukankan      html  css  js  c++  java
  • 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传入到封装好的函数做为参数
     
  • 相关阅读:
    美化博客园
    ansible的安装
    面向对象和类
    函数知识分类
    生成器
    内置函数_old
    迭代器
    装饰器
    Hadoop——MapReduce
    Hadoop——HDFS
  • 原文地址:https://www.cnblogs.com/zlbrother/p/7712784.html
Copyright © 2011-2022 走看看