函数式编程
纯函数
相同的输入永远会得到相同的输出,而且没有任何可观察的副作用。
slice和splice
1 | let arr = [1, 2, 3, 4, 5] |
slice是纯函数,返回数组中指定的部分,不会改变原数组。
splice是不纯的函数,对数组进行操作返回改数组,会改变原数组。
纯函数的好处
因为纯函数对相同的输入始终有相同的结果,所以可以把纯函数的结果缓存起来。
1 | // 模拟memoize方法的实现 |
柯里化
当一个函数有多个参数的时候先传递一部分参数调用它(这部分参数以后永远不变)。然后返回一个新的函数接收剩余的参数,返回结果。
1 | function curry (func) { |
- 柯里化可以让我们给一个参数传递较少的参数得到一个已经记住了某些固定参数的新函数
- 这是一种对函数参数的缓存
- 让函数变的更灵活,让函数的粒度更小
- 可以把多元函数转换成一元函数,可以组合使用函数产生强大的功能