美文网首页JavaScript < ES5、ES6、ES7、… >
高阶函数使用(作为参数和返回值的使用)

高阶函数使用(作为参数和返回值的使用)

作者: nomooo | 来源:发表于2019-03-22 04:30 被阅读14次

在看使用之前,先复习下函数中的几个常见成员
属性和方法都是一个对象中的成员

   function f1() {
     console.log(f1.name);//函数的名字
   }
   f1.name="f5";
//就是为f1这个实例对象添加了一个新的属性,属性的值是:f5,恰巧,f1这个对象中有name属性,这个操作是相当于改变f1中name属性的值.又因为f1这个对象中的name属性是只读的,
   f1();//f1
   console.dir(f1);//f1()
   console.log(f1.name);//f1

函数中的name属性是函数的名字
arguments属性,是传入的参数形成的一个对象,arguments.length是实参的个数
length属性是函数的形参的个数
caller属性:是调用者,函数1如果在函数2中被调用,那么函数中的caller就是函数2

   function f1(x) {
     console.log(f1.caller);//null
    //  该函数调用的时候传入的参数的个数:实参的个数
     console.log(f1.arguments.length);//0
    //  函数定义的时候的形参的个数
     console.log(f1.length);
   }
  f1();//1
   function f1(x,y) {
     console.log(x+y);//30
     console.log(f1.caller.name);
   }
   function f2() {
     f1(10,20);
   }

   //如果f2这个函数调用了,那么会在f2的函数中去调用f1函数
   f2();
    //30 
    //f2

函数作为参数属性
函数可以作为参数使用,命名函数或者是匿名函数都可以,注意:命名函数只传入函数的名字

   function f1(fn) {
     console.log("函数f1调用开始");
     fn();//fn就是一个函数
     console.log("函数f1调用结束");
   }

   function f2() {
     console.log("我是f2函数");
   }
   f1(f2);
//函数f1调用开始
//我是f2函数
//函数f1调用结束

下面这段代码可以看到当函数作为参数使用时候的调用顺序

function f1(fn) {
      setInterval(function () {
        console.log("我是定时器中的,我开始执行了");
        fn();//作为函数使用
        console.log("哎呀,马上就结束了");
        console.log("========");
      },1000);
    }
    f1(function () {
      console.log("我在执行喽");
    });
//我是定时器中的,我开始执行了
//我在执行喽
//哎呀,马上就结束了
//========
//ps:会每隔一秒打印上面四行

函数作为返回值使用

       function f1(x) {
         console.log("哈哈,我又变帅了");
         return function (y) {
           console.log("我是f1函数的返回值,但是我是函数"+x+"===>"+y);
         };
       }
       var ff=f1(10);
       ff(20);

    //函数的作用就是判断当前的这个对象是不是某个数据类型
    function getFunc(type) {
      return function (obj) {//obj中存储的就是一个对象
        //判断[10,20,30] 和[object Array]是否相等
        return Object.prototype.toString.call(obj) == type;
      }
    }

作为返回值使用扩展

    //构造函数
    //创建三个对象,分别把三个对象加入到数组中,每个对象中有三个属性,把三个对象排序,但是是按照每个对象的属性进行排序---影片的信息

    function File(name, size, time) {
      this.name = name;//影片的名字
      this.size = size;//影片的大小
      this.time = time;//上映的时间
    }
    var f1 = new File("jack.avi", "400M", "1997-12-12");
    var f2 = new File("zhujiao.avi", "200M", "2017-12-12");
    var f3 = new File("tom.avi", "800M", "2010-12-12");
    var arr = [f1, f2, f3];
    function fn(attr) {
      //函数作为返回值使用
      return function (obj1, obj2) {
        //对象不能直接对比,但是对象中的属性的值是可以对比
        if (obj1[attr] > obj2[attr]) {
          return 1;
        } else if (obj1[attr] == obj2[attr]) {
          return 0;
        } else {
          return -1;
        }
      }
    }
    var str = "time";
    arr.sort(fn(str));//函数作为参数使用

    //输出排序后的结果
    for (var i = 0; i < arr.length; i++) {
      console.log(arr[i].name + "----" + arr[i].size + "----" + arr[i].time);
    }

相关文章

  • Python之函数三

    1.高阶函数 1.1高阶函数简介和特点 接受函数作为参数,或者将函数作为返回值的函数就是高阶函数(当我们使用一个函...

  • Kotlin-----方法进阶

    在kotlin中我们将函数作为参数或者返回值的函数叫做高阶函数,也就是使用方法体作为参数的方法叫做高阶方法。 函数...

  • Kotlin-高阶函数

    介绍 Kotlin是函数式编程,所以可以把函数作为参数传递给函数,或者作为函数的返回值使用,我们称其为高阶函数。本...

  • swift泛型协议在函数中做参数和返回值

    泛型协议在函数中作为参数和返回值类型使用泛型协议只能作为泛型的约束使用,不能直接作为函数参数或者返回值类型使用。就...

  • 高阶函数使用(作为参数和返回值的使用)

    在看使用之前,先复习下函数中的几个常见成员属性和方法都是一个对象中的成员 函数中的name属性是函数的名字argu...

  • Kotlin 高阶函数

    什么是高阶函数 将函数作为参数或者返回值的,称高阶函数。 定义高阶函数 action是一个高阶函数,(Int) -...

  • Python常用高阶函数map、sorted、filter及生成

    先说什么是高阶函数,高阶函数是指可以接受函数作为参数、或者可以把函数作为结果返回的函数,这种函数就是高阶函数。使用...

  • 高阶函数与闭包

    高阶函数 当 函数 A 接收函数 B 作为参数,或者把函数 C 作为返回值输出时,我们称 函数 A 为高阶函数。通...

  • React 高阶组件

    高阶函数 函数可以作为参数被传递 函数可以作为返回值输出 高阶组件 高阶组件接受一个组件作为参数,并返回一个新组件...

  • 高阶函数

    高阶函数 函数作为参数 函数作为返回值的时候 作为参数 回调函数 回调函数就是一个参数,将这个函数作为参数传到另一...

网友评论

    本文标题:高阶函数使用(作为参数和返回值的使用)

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