什么是函数式编程

一、以函数式编程思想实现的库lambda、underscore?

https://underscorejs.org/

二、函数式编程是什么?

函数式编程是一种编程范式。js 中使用的编程范式还有命令式、依赖原型链的面向对象的范式、以及元编程。

函数式编程:不直接操作变量,对一系列逻辑抽象成函数,再对函数进行组合,完成系统开发。

三、函数式编程的特点?

函数是一等公民。指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值

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

没有"副作用"指的是函数内部与外部互动(最典型的情况,就是修改全局变量的值),产生运算以外的其他结果。函数式编程强调没有"副作用",意味着函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。

不修改状态。

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

四、函数式编程的好处?

代码简洁,开发快速。通用性复用性更高,维护性更好,作用域局限,副作用少。

更方便的代码管理。函数式编程不依赖、也不会改变外界的状态,只要给定输入参数,返回的结果必定相同。因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)和除错(debugging),以及模块化组合。

接近自然语言,易于理解。

易于"并发编程"。

五、常见的函数式编程的场景

闭包、偏函数、柯里化、compose、链式调用、高阶函数



六、参考

http://taobaofed.org/blog/2017/03/16/javascript-functional-programing/

你可能感兴趣的:(什么是函数式编程)