主要概念:
- 函数的一等性和高阶性
能赋值给变量,能做为参数传递、能作为返回值返回(函数可作为值传递)
- 纯函数
不会产生副作用的函数,输出只依赖输入(遵循引用透明原则 => 相同的输入得到相同的输出)
- 函数副作用
函数的输出不一定完全由给定的输入决定,产生了额外的影响(修改全局变量、修改参数等)
- lambda表达式
//javascript中就是箭头函数,一般写法就是单行,也可以多行
// 函数名不是一个具体的值,应该是一个可获取值得描述
const value = d => d.value;
- point-free风格
- 函数式响应式编程(FRP)
主要技巧:
优化方案:
注意细节:
- 描述与求值分离
- 函数柯里化
- 抽离不纯
- monad管理程序的控制流
常用库:
- Ramda.js 工具库
- Lodash 工具库
- underscore.js 工具库
- highland.js 数据流库
- Bacon.js 数据流库
- Rxjs 数据流库
- mori.js 持久化数据结构
- immutable.js 持久化数据结构
- QUnit 单元测试库
- JSCheck 随机用例测试库
- blanket、istanbul 代码覆盖率测试