高阶函数,函数柯里化的应用(before函数,after函数)

377 阅读1分钟

定义:函数的参数或者返回值仍然是函数

应用一:after函数。

after函数接受2个参数,第一个参数是回调函数,第二个参数是当执行几次后回调该函数。

let after = function (myfunc,times) {
        var time = times;
        return function () {
            time--;
            if(time<=0){
                myfunc();
            }
        }
    }
    var my = function () {
        console.log("函数执行了");
    }
    var aaa = after(my,3);
    aaa();
    aaa();
    aaa();
    aaa();

上面回调函数的功能是打印“函数被执行了”,把它传入after函数,并指定3次以后开始执行回调函数。现在调用了4次aaa,只有第三次和第四次才会真正打印“函数被执行了”。打印结果如下:

image.png

应用二:before函数

当调用一个函数(myFunctuin)的before函数,需要传参,该参数是一个回调函数,这个回调函数应当在myFunction执行前被执行,实现方法如下:

    Function.prototype.before = function (myFun) {
        let that = this;
        return function () {
            myFun();
            that();
        }
    }
    let myFun = function () {
        console.log("我是myFun函数");
    }
    let insert = function () {
        console.log("我应该在myFun之前执行");
    }
    let aaa = myFun.before(insert);
    aaa();

执行结果如下:

image.png