提到 **函数式编程(fp)**,作为前端开发者,我想大家第一个想到的就是 React 吧。React在16.8推出 hook 后,更是将fp贯彻到极致,我们在使用React的过程中,也体会到了fp的魅力,那么废话不多说,赶快开始本章的内容吧~
什么是函数式编程
首先给出答案:函数式编程是一种编程范式
其实编程范式有很多种,列举如下
- 函数式编程:函数作为一等公民,它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做
- 命令式编程:主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么
- 声明式编程: 以数据结构的形式来表达程序执行的逻辑,它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做,它不需要创建变量来存储数据,也不包含循环控制的代码如for、while、if
函数式编程里的函数并不是指计算机里的函数,而是指数学里的函数,即映射
函数式编程的特点
通常函数式编程有如下特点
- 函数作为一等公民,可以出现在任何地方,包括函数 入参 或 返回值
- 使用 递归 而不是循环遍历
- 数据具有 不可变性
- 不管何时何地,不管调用多少次,相同的入参,始终返回 相同 的值
- 不存在副作用
- 尾递归: 需要满足两个条件
- 递归调用语句在函数的 末尾
- 递归调用的返回值 不存在 于其他表达式之中
- 柯里化:接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术
函数式编程的优点
基于上述的特点,函数式编程有如下优点
- 代码简洁
- 可复用逻辑粒度为函数,很小很轻量
- 更贴近人类思维,易于理解
- 代码更可控可预测,方便测试
- 可以实现惰性求值
采用函数式编程的语言
列举如下:
- Haskell
- Clojure
- Lisp
结语
理解函数式编程的内核是十分重要的,它可以帮助我们写出更加简洁且健壮的代码,同时也是未来的趋势,所以,一起加油吧,骚年!