函数式编程
2019-04-02 本文已影响0人
林键燃
函数式编程的目的是使用函数来抽象作用在数据上的控制流和操作,从而在系统中消除副作用并减少对状态的改变
基本概念
- 声明式编程
- 纯函数
- 引用透明
- 不可变性
声明式编程
// 命令式方式
var array = [0, 1, 2, 3]
for(let i = 0; i < array.length; i++) {
array[i] = Math.pow(array[i], 2)
}
array; // [0, 1, 4, 9]
// 声明式方式
var arr = [0, 1, 2, 3].map(num => Math.pow(num, 2))
arr; // [0, 1, 4, 9]
纯函数
- 仅取决于提供的输入,而不依赖于任何在函数求值或调用间隔时可能变化的隐藏状态和外部状态
- 不会造成超出作用于的变化,例如修改全局变量或引用传递的参数
引用透明
- 如果一个函数对于相同的输入始终产生相同的结果,那么我们就说它是引用透明
其实对于箭头函数在函数式编程里面有一个高大上的名字,叫 lambda 表达式,对于这种匿名函数在学术上就是叫 lambda 表达式,现在在 java 里面也是支持的。
不可变数据
- 创建后不能更改的数据