四个常用函数式编程,你可能在不知不觉中已经用到...

1、纯函数

  • 定义一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数

  • 作用:对于代码的安全性和可用性会更方便

    为什么要煞费苦心地构建纯函数?

    因为纯函数非常“靠谱”,执行一个纯函数你不用担心它会干什么坏事,它不会产生不可预料的行为,也不会对外部产生影响。不管何时何地,你给它什么它就会乖乖地吐出什么。如果你的应用程序大多数函数都是由纯函数组成,那么你的程序测试、调试起来会非常方便

  • 实现

    //    一个函数的返回结果 只依赖于参数,且不会有其它副作用
    let a = 1;
    function test1(b) {
        // 不是纯函数,依赖了外部参数
        // 外部参数一旦改变,返回结果就会不一样
        // 肯下一次 test1(1)的值就不为 2了
        return a + b
    }
    function test2(a, b) {
        // 不是纯函数,依赖了外部参数,外部采纳数一旦改变,返回结果就会不一样
        return a + b
    }
    console.log(test1(1)); // 2
    console.log(test2(1, 1)); // 2
    

2、高阶函数

  • 高阶函数(Higher-Order Functions)定义函数作为其参数或者返回值为函数的函数被称为高阶函数

  • 作用:在调用函数的时候不需要考虑内部是如何实现的,十分的灵活

  • 实现:数组的 map、filter、find…等等

3、惰性函数

  • 定义:惰性函数,即只在第一次执行,第 n 次执行后再调用得到的结果都是一样的

  • 作用:只需要执行一次就缓存值,提升执行效率

  • 实现

        // 解决一:普通方法
        // 弊端:会产生全局变量,每次都要判断
        let date;
        function foo() {
          if (date) return date;
          else {
            return date = new Date();
          }
        }
    
        // 解决二:闭包
        var foo = (function () {
          let date;
          return function () {
            if (date) return date;
            else {
              return date = new Date();
            }
          }
        }())
    

4、偏函数

  • 定义:就是当函数的参数太多的时候,需要简化,这个函数可以固定住原来的参数的部分参数

  • 作用:简化参数量

  • 实现

        function add(a, b = 2) {
          console.log(a + b);
        }
        add(1)
        add(12)
    

关注公众号:前端兔 查看更多前端知识分享~~

你可能感兴趣的:(函数式编程,前端,函数式编程)