美文网首页Java学习笔记每天写500字IT@程序员猿媛
Javascript第四章定义函数的形式、回调函数第五课

Javascript第四章定义函数的形式、回调函数第五课

作者: 您好简书 | 来源:发表于2019-07-12 09:54 被阅读8次
    在这里插入图片描述

    两者的区别:

    第一种方法:函数声明在编写时可以先调用,再声明;

    第二种方法:函数表达式必须先定义,再调用
    <a class="btn btn-sm btn-red-hollow attention" id="btnAttent" target="_blank">更多免费教学文章<font color="blue" size="2">请关注这里</font></a>

    在这里插入图片描述

    函数的回调

    在这里插入图片描述

    主要的理解: 当用户用的时候,不是直接触发的状态,当他满足一定条件后执行叫回调函数

    在这里插入图片描述

    练习:

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Document</title>
        <script type="text/javascript">
            function show(){
                
                alert("欢迎来到Camel的空间");
                
            }
            
            window.onclick=show;//回调函数
        </script>
    </head>
    <body>
        
    </body>
    </html>
    
    image.png
    <script language="javascript">
    02      function SortNumber( obj, func )                    // 定义通用排序函数
    03      {
    04          // 参数验证,如果第一个参数不是数组或第二个参数不是函数则抛出异常
    05          if( !(obj instanceof Array) || !(func instanceof Function)) 
    06          {
    07              var e = new Error();                        // 生成错误信息
    08              e.number = 100000;                      // 定义错误号
    09              e.message = "参数无效";                     // 错误描述
    10              throw e;                                        // 抛出异常 
    11          }
    12          for( n in obj )                                     // 开始排序
    13          {
    14              for( m in obj )
    15              {
    16                  if( func( obj[n], obj[m] ) )            // 使用回调函数排序,规则由用户设定
    17                  {
    18                      var tmp = obj[n];                       // 创建临时变量
    19                      obj[n] = obj[m];        // 交换数据
    20                      obj[m] = tmp;
    21                  }
    22              }
    23          }
    24          return obj;                                         // 返回排序后的数组
    25      }
     
    

    我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。

    字面上的理解,回调函数就是传递一个参数化的函数,就是将这个函数作为一个参数传到另一个主函数里面,当那一个主函数执行完之后,再执行传进去的作为参数的函数。走这个过程的参数化的函数 就叫做回调函数。换个说法也就是被作为参数传递到另一个函数(主函数)的那个函数就叫做 回调函数。

    举一个别人举过的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。” 对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。

    回调函数应用场景多用在使用 js 写组件时和耗时操作上面,尤其是组件的事件很多都需要回调函数的支持。

    如果还是不明白,下面看一下代码:

    <script type="text/javascript">
            function title(value){//这是回调函数!!!!
                alert(value);
            }
            function main(title, value){//这个主函数:在参数列表中,title作为一个参数传递进来,也就是上文说的 参数化函数;然后value这个值正是title()函数中所需要的。
                alert("我是主函数");
                title(value);//结果为:'我是回调函数'。——————然后在这行这个title(),它就是回调函数咯。
            }
            main(title,"我是回调函数");//title参数加上()后,就会变回一个函数,并会被执行一次。
            //PS:看清楚,调用的是main()函数,意味着先执行main(),这时已经执行了主函数,title()被main()在函数体中执行了一次,因此title()是回调函数。
        </script>
    

    回调函数易混淆点——传参:
    一,将回调函数的参数作为与回调函数同等级的参数进行传递。

    image.png

    二,回调函数的参数在调用回调函数内部创建。

    image.png

    翻译过来就是:回调函数是一个作为变量传递给另外一个函数的函数,它在主体函数执行完之后执行。

    function A有一个参数function B,function B会在function A执行完成之后被调用执行。

    三. 回调函数的使用方法

    代码如下:

    function a(callbackFunction){
    alert("这是parent函数a");
    var m =1;
    var n=3;
    return callbackFunction(m,n);
    }
    function b(m,n){
    alert("这是回调函数B");
    return m+n;
    }
    $(function(){
    var result = a(b);
    alert("result = "+ result);
    });

    执行顺序为:

    这是parent函数a

    这是回调函数B

    result = 4

    函数首先执行了主题函数a,之后调用了回调函数b,最后返回函数a的返回值。

    相关文章

      网友评论

        本文标题:Javascript第四章定义函数的形式、回调函数第五课

        本文链接:https://www.haomeiwen.com/subject/qagskctx.html