一、概念
函数式编程通过使用函数,来将值转换成抽象单元,接着用于构建软件系统。
命令式编程和函数式编程的区别?
命令式编程往往是建立在直接操作和检查程序状态之上的。
函数式,倾向于把程序拆分,并抽象成多个函数组装回去。
1、高阶函数
- 函数可以作为返回值(给了一些函数组合,编排,缓存的能力)
- 函数可以作为参数传递(给了一些函数,包装的能力)
优点:
- 表达力更清晰
- 利于复用
- 利于维护
2、纯函数 - 一个函数如果输入参数确定,那么输出的结果一定是唯一的。
- 无状态的
- 无副作用的
举例
//这是有副作用的
const minusCount = (num) => {return window.count - num;
}
//要将有副作用的抽出来
const xxx =()=>{ return window}
//这样这个函数才是纯函数
const minusCount = (global,num) => {return global.count - num;
}
3、柯里化
是把接受多个参数的函数变换成接受一个单一的参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术
const minusCount = (global