javascript函数式编程
javascript中函数是第一类对象,不依赖任何其他对象独立存在。函数式编程其实是一种编程思想,它追求更细的粒度,将应用拆分成一组组极小的单元函数,组合调用操作数据流,追求的是更简洁、可预测、高复用、易测试。
纯函数
相同的输入得到相同的输出,不依赖且不影响外界环境也不产生任何副作用,输出完全取决于输入。
优势:
- 完全独立,与外部解耦;
- 高度可复用,在任意上下文,任意时间线上,都可执行并且保证结果稳定;
- 可测试性极强;
函数复合
将多个函数进行组合后调用,可以实现将一个个函数单元进行组合,达成最后的目标
优势:
- 隐藏中间参数,不需要临时变量,避免了这个环节的出错几率;
- 只需关注每个纯函数单元的稳定,不再需要关注命名,传递,调用等;
- 可复用性强,任何一个函数单元都可被任意复用和组合
高阶函数
以函数为参数,返回一个新的增强函数 的一类函数
-
优势:
- 便于维护,易于扩展,回掉函数可以单独抽离到外面来。
- 将一系列单元函数列表组合成功能更强大的函数
函数柯里化
只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
用处:
-
延迟运行
- 参数复用
-
提前确认
可参考 https://www.jianshu.com/p/2975c25e4d71