• javascript——对象的概念——函数 3 (使用技巧)


    1、回调函数:将函数A传给函数B,由函数B来执行A,则称A为回调函数。

    例1:

     

    例2

     1         function addone(a){return  a+1;};          //定义一个回调函数
     2         function mulitiply(a,b,c,callback)         //定义一个可以调用回调函数的函数
     3         {
     4              var i,ar=new Array();
     5              for(i=0;i<3;i++)
     6              {
     7                   ar[i]=callback(arguments[i]*2);     //将输入参数乘以2之后作为回调函数的参数执行。
     8              }
     9              return ar;
    10         }
    11         var myarr=mulitiply(1,2,3,addone);
    12         myarr;        //[3, 5, 7]
    指定输入参数个数

    改进代码,使其可以忽略输入参数个数。将代码修改后如下:

     1         function addone(a){return  a+1;};          //定义一个回调函数
     2         function mulitiply(an)         //定义一个可以调用回调函数的函数
     3         {
     4              var i,ar =new Array(arguments.length-1);
     5              if (typeof arguments[arguments.length-1]==="function")
     6                   for(i=0;i<arguments.length-1;i++)
     7                         ar[i]=arguments[arguments.length-1](arguments[i]*2);     //将输入参数乘以2之后作为回调函数的参数执行。
     8              return ar;
     9         }
    10         var myarr=mulitiply(1,2,3,addone);      //这种方式要求回调函数放在参数的最后一个
    11         myarr;       //[3, 5, 7]
    12         var myarr=mulitiply(1,2,3,4,addone);      //这种方式要求回调函数放在参数的最后一个
    13         myarr;       //[3, 5, 7, 9]
    不指定输入参数个数

     效果如图:

     2、返回函数的函数:执行的函数返回值是一个函数引用。

     1         function a()
     2         {
     3              function b()
     4              {
     5                   return 'B';
     6              };
     7              return b;    //返回一个函数的引用
     8         }
     9         var newfunct=a();   //获得一个函数的引用
    10         typeof newfunct;   //"function"
    11         newfunct();       //"B"
    12         a()();   //"B";  a()表示获取一个函数的引用,a()();表示执行获取引用的函数
    返回函数的函数

     3、重写自己的函数:将一个指向函数的变量指向另一个函数实现重写。

     例1:

    重写函数常常用于在一个函数执行时必须完成一些初始化工作,这样以后在调用函数就不必重复执行一些不必要的操作。

    例2:

      

    结果如下:

    1         var a=function()
    2         {
    3              function init(){document.writeln('进行初始化工作<br/>');};
    4              function actuall(){ document.writeln('正式进行实际的操作<br/>');};
    5              init();   //执行初始化工作
    6              return actuall;     //返回函数引用
    7         } ();    //立即运行,变量 a 指向函数actuall
    重写函数例子

    步骤分解如下:

    在大函数内包含了两个小函数,其中 init 用于执行初始化函数,而大函数后面带了(),即大函数立即执行,首先执行了init初始化函数,再次将 actuall 函数的引用赋给了变量a,以后再调用 a 时,就只调用 actuall 函数,而不再执行 init 函数了。

     

  • 相关阅读:
    Python网络爬虫之Scrapy框架(CrawlSpider)
    在爬虫中使用单线程异步协程,包含单任务和多任务,以及数据解析使用回调函数
    使用线程池来进行发送爬取请求和存储数据
    在linux和windows中使用selenium
    以太坊私有节点搭建
    以太坊简介
    区块链历史来源
    通过go-ethereum源码看如何管理项目
    react-router简介
    js变量的解构赋值
  • 原文地址:https://www.cnblogs.com/SunBlog/p/4050030.html
Copyright © 2020-2023  润新知