1. 什么是函数式编程
- 函数式编程是一种编程范式;编写程序的时候以函数为主,程序函数化;
- 函数式编程是一种编程风格;期望是用计算来表示程序,用计算的组合来表达程序的组合;
-
2. 纯函数
纯函数可以理解为没有副作用和引用透明的组合,同时还可以再加上一个不严谨的判断依据;只接收一个参数,只返回一个值。同时纯函数是独立的,那么在执行顺序上是与程序结果是无关的,这样在执行并发的时候也不会有大问题。 包含很多技术点和特性:
函数是一等公民
- 匿名函数
- 闭包
- 柯里化
- 惰性求值
-
没有副作用
函数编程不依赖外部的状态也不修改外部的状态:
没有改变变量
- 没有打印控制台或其他
- 没有读取写入文件、数据库等
- 没有抛出异常
3. 代码实现
柯里化函数实现
```javascript // ES5 function curry(fn, arr = []) { return fn.length === arr.length ? fn.apply(null, arr) : function(…args) { return curry(fn, arr.concat(args)) } }
// ES6 const curry = (fn, arr = []) => { fn.length === arr.length ? fn(…arr) : (…args) => { curry(fn, […arr, …args]); } }
<a name="nv4Sp"></a>### 4. 偏函数> 偏函数是固定一个函数的一个或者多个参数,也就是将一个n元函数转换成一个n-x元函数> 柯里化是将一个多参数函数转换成多个单参数函数,也就是将一个n元函数转换成n个一元函数 f(a, b, c)转化为f(a)(b)(c)```javascriptcurryAdd = Curry(Add);AddBySeven = curryAdd(7);AddBySeven(5)(10);
