# 函数式编程
# 纯函数
纯函数是这样一种函数,即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用。
# 柯里化 (curry)
单一参数
参数复用、提前返回和 延迟执行
只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数
用途:参数复用。本质上是降低通用性,提高适用性
用闭包把参数保存起来,当参数的数量足够执行函数了,就开始执行函数
# 组合 (Compose)
将函数串联起来执行,将多个函数组合起来,一个函数的输出结果是另一个函数的输入参数
// ES6 JavaScript Compose Function
const compose = (...fns) =>
fns.reduceRight(
(prevFn, nextFn) => (...args) => nextFn(prevFn(...args)),
value => value
)