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传入到封装好的函数做为参数
     
  • 相关阅读:
    [CF1355] Codeforces Round #643 (Div. 2)
    [ABC189] AtCoder Beginner Contest 189
    P3702 [SDOI2017]序列计数 (三模数NTT)
    P3321 [SDOI2015]序列统计 (NTT快速幂)
    洛谷P4157 [SCOI2006]整数划分
    洛谷P2553 [AHOI2001]多项式乘法
    洛谷P1919 (模板)A*B Problem升级版(FFT快速傅里叶)
    MySQL学习总结-详细版(包括下载安装)
    查看oracle数据库中表是否被锁
    SQL优化(面试题)
  • 原文地址:https://www.cnblogs.com/zlbrother/p/7712784.html
Copyright © 2011-2022 走看看