链接

    函数式编程关心数据的映射,命令解决问题的步骤。

    高阶函数就是参数为函数或返回值为函数的函数。

    命令式:通过编写多条指令让计算机执行一些动作,其中一般都会涉及到很多繁杂的细节。
    声明式:通过表达式的方式来声明我们想做什么,而不是通过多条指示。

    纯函数(函数式编程的基石,无副作用的函数)

    纯函数相对于非纯函数来说,在可缓存性、可移植性、可测试性以及并行计算方面都有着巨大的优势。

    函数柯里化
    将一个低阶函数转换为高阶函数的过程就叫柯里化。

    1. function curry (fn, currArgs) {
    2. return function() {
    3. let args = [].slice.call(arguments);
    4. // 首次调用时,若未提供最后一个参数currArgs,则不用进行args的拼接
    5. if (currArgs !== undefined) {
    6. args = args.concat(currArgs);
    7. }
    8. // 递归调用
    9. if (args.length < fn.length) {
    10. return curry(fn, args);
    11. }
    12. // 递归出口
    13. return fn.apply(null, args);
    14. }
    15. }