函数式编程关心数据的映射,命令解决问题的步骤。
高阶函数就是参数为函数或返回值为函数的函数。
命令式:通过编写多条指令让计算机执行一些动作,其中一般都会涉及到很多繁杂的细节。
声明式:通过表达式的方式来声明我们想做什么,而不是通过多条指示。
纯函数(函数式编程的基石,无副作用的函数)
纯函数相对于非纯函数来说,在可缓存性、可移植性、可测试性以及并行计算方面都有着巨大的优势。
函数柯里化
将一个低阶函数转换为高阶函数的过程就叫柯里化。
function curry (fn, currArgs) {return function() {let args = [].slice.call(arguments);// 首次调用时,若未提供最后一个参数currArgs,则不用进行args的拼接if (currArgs !== undefined) {args = args.concat(currArgs);}// 递归调用if (args.length < fn.length) {return curry(fn, args);}// 递归出口return fn.apply(null, args);}}
