1.声明式(Declarativ)
//命令式编程: function double(arr) { const results = [] for (let i = 0; i < arr.length; i++){ results.push(arr[i] * 2) } return results } function addOne(arr){ const results = [] for (let i = 0; i < arr.length; i++){ results.push(arr[i] +1) } return results }
//声明式: const double = arr => arr.map(item => item * 2); const addOne = arr => arr.map(item => item + 1);
2.纯函数(Pure Function)
相反的不纯函数:
改变全局变量的值。
- 操作浏览器的DOM。
3.数据不可变性(Immutability)
问题:javascript算不算函数式编程语言?
例如,在命令式编程环境中, a:=b+c表示将表达式的结果赋给 a,而之后改变 b 或 c的值不会影响 a。但在响应式编程中,a的值会随着 b或 c的更新而更新。
RxJS 属于“函数响应式编程”。
- 数据流抽象了很多现实问题。
- 擅长处理异步操作。
- 把复杂问题分解成简单问题的组合。