函数式编程简介

js 函数式编程
函数式的思想, 就是不断地用已有函数, 来组合出新的函数。

函数式编程具有五个鲜明的特点:

  1. 函数是”第一等公民”
    指的是函数与其他数据类型一样,处于平等地位

  2. 只用”表达式“,不用”语句”
    “表达式”(expression)是一个单纯的运算过程,总是有返回值;
    “语句”(statement)是执行某种操作,没有返回值。

  3. 没有”副作用”
    指的是函数内部与外部互动(最典型的情况,就是修改全局变量的值),
    产生运算以外的其他结果。

  4. 不修改状态
    变量往往用来保存”状态”(state)。不修改变量,意味着状态不能保存在变量中,
    函数式编程使用参数保存状态

  5. 引用透明
    指的是函数的运行不依赖于外部变量或”状态”,只依赖于输入的参数,任何时候只要参数相同,
    引用函数所得到的返回值总是相同的

函数式编程的意义:
1. 代码简洁,开发快速
2. 接近自然语言,易于理解
3. 更方便的代码管理
4. 易于”并发编程”
5. 代码的热升级

为什么用函数式编程

在 JavaScript 中,函数本身为一种特殊对象,属于顶层对象,
不依赖于任何其他的对象而存在,因此可以将函数作为传出 / 传入参数,
可以存储在变量中,可以做一切其他对象可以做的事情。

自调用函数(递归—自己调用自己)实际上是高阶函数的一种形式。
特点

  1. Vue3 React16.8 全面化函数式的推动
  2. 函数式编程可以使得代码单元相对更加独立 - tree shaking 过程更顺畅,更方便做 UT
  3. 减少了对 this 的依赖,减轻了开发人员对于指向问题的困惑
  4. js 天生友好函数式:ramda、loadsh