image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    自己实现
    function curry(fn, context){
    let len = fn.length;
    context = context || this;
    let mid = (…args) => {
    if(len > args.length){
    return (…args2) => mid.call(context, …args, …args2)
    }else{
    return fn.call(context, …args)
    }
    }
    return mid;
    }

    var curry = (fn) =>
    mid = (…args) =>
    fn.length > args.length ?
    (…args2) => mid(…args, …args2) :
    fn(…args)

    image.png
    image.png
    image.png
    var compose = (…args) => {
    return (…args2) => {
    let start = args.length - 1;
    let result = args[start].apply(this, args2);
    while(start—) result = args[start].call(this, result);
    return result
    }
    }
    https://github.com/mqyqingfeng/Blog/issues/45
    组合
    https://github.com/mqyqingfeng/Blog/issues/46
    递归
    https://github.com/mqyqingfeng/Blog/issues/49