前端学习之函数式编程—函数式编程概念+头等函数

Posted 萌萌的DDD

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端学习之函数式编程—函数式编程概念+头等函数相关的知识,希望对你有一定的参考价值。

什么是函数式编程

函数式编程(function programming FP)FP是编程范式之一,我们常听说的还有,面向过程编程,面向对象编程

函数式编程的思维方式

把现实世界的事物和事物之间的联系抽象到程序世界(对运算过程进行抽象)

注意:函数式编程中的函数并不是指程序中的函数(或调用的方法),并不是你在开发过程中使用了函数就叫做函数式编程。

函数式编程则代表的是映射关系

例如:

y=sin(x)

当我在数学中的sin函数中,输入x值为1时,y值必定也等于1,映射了x和y轴的关系

所以函数式编程代表的是相同的输入始终要得到相同的输出

函数式编程没有可变的变量、循环等这些命令式编程方式中的元素,像数学里的函数一样,对于给定的输入,不管你调用该函数多少次,永远返回同样的结果。

// 非函数式编程

   let num1 = 1
   let num2 = 2 

   let sum = num1 + num2

   console.log(sum) // 3




// 函数式编程

   function add(num1 , num2){
    
       return num1 + num2

   } 
   
   let sum = add(1,2)
   
   console.log(sum) // 3

函数是一等公民(头等函数)

MDN First Class Function

https://developer.mozilla.org/zh-CN/docs/Glossary/First-class_Function

所谓一等公民是指,函数与我们平时所使用的其他数据类型地位一样

  • 函数可以储存到变量中
  • 函数可以作为参数
  • 函数可以作为返回值

javascript函数就是一个普通的对象,因此可以吧函数储存到变量/数组中,并且可以作为另一个函数的参数和返回值

//  把函数赋值给变量

    let fn = function () {
      console.log('first class function')
   }

    fn()


//  把函数赋值给数组
    let arr = [fn]
    
    arr[0]()


//  示例

    const Controller = {
        index(posts) { return Views.index(posts)},
        create(posts,gets) { return Db.create(posts,gets) }
    }

//  优化

    const Controller = {
        index:Views.index,
        create:Db.create,
    }

    Controller.index()
    Controller.create

对象中赋值的并不是方法的调用,而是方法本身。

体现了函数一等公民的特性,在对象中作为返回值以及储存到变量的特点。

以上是关于前端学习之函数式编程—函数式编程概念+头等函数的主要内容,如果未能解决你的问题,请参考以下文章

前端学习之函数式编程—柯里化

前端学习之函数式编程—纯函数

前端学习之函数式编程 — 函数组合

前端学习之函数式编程—高阶函数

进阶学习1:函数式编程FP——概念头等函数高阶函数常用高阶函数模拟

Scala学习之函数式风格编程