函数式编程
什么是函数式编程
函数式编程是一种编程规范。
像我们熟悉的面向对象编程和面向过程编程,也属于是编程规范。
这里的函数并不是指 JavaScript 中的 Function 而是指数学中的函数概念 y=f(x)
,程序的本质其实就是通过输入得到输出,而数学中的函数则很好的表达了这样的关系。
我个人理解函数式编程本质上就是将功能拆解成一系列独立的纯函数,通过函数间的相互调用来完成功能。
编程规范
面向过程
先做这个,再做那个,然后做什么,一步一步来。
面向对象
把功能组织成对象,然后相关操作作为对象的方法。
函数式编程
把功能分解为一系列独立的纯函数,通过函数间互相调用来完成功能。
为什么用函数式编程
- 提高可复用性和可扩展性
每一个函数就是一块积木,我们随时能够拼入新积木,随时能取出积木去复用。
- 有利于 Tree-shaking
Tree-shaking 的本质是通过文档流的引入判断是否使用某个方法,但是面向对象的编程方案无法记录,使用函数式编程写法更有利于脚手架进行 Tree-shaking,没有引用或调用的函数不会被编译。
函数式编程的缺点
- 函数太多 不好管理
- 逻辑性不强
涉及到业务逻辑比较强的代码 还是选择面向对象写法 面向对象非常擅长组织逻辑
如何写好函数式编程/函数
函数式编程的函数要求
- 保证纯函数
一个函数的返回结果只依赖于它的参数,同样的输入必定有同样的输出。
-
减少函数副作用
函数副作用就是函数会影响外部的数据,如全局变量。
工程化下的函数式编程
引入和暴露需要单独暴露。