对高阶函数的理解(一)

319 阅读1分钟
  读《Javascript设计模式》的总结
  一个在前端路上奔跑的小白

什么是高阶函数

1. 如果一个函数的参数是一个函数 (回掉函数就是高阶函数)
2. 如果一个函数返回一个函数 

* 满足以上两点的就算是高阶函数

使用场景有哪些

比如 我们想在一个方法上进行拓展 在不改变原有方法的结构,且使得可以满足我们业务需求时 就会用到高阶函数 

例子

// 比如这里我们其实想进行拓展 但是不能改变原有方法代码
function say() {
    console.log('say');
}

// 然后我们 Function 的原型上定义个before的方法
Function.prototype.before = function (callback) {
    console.log('before');
    // 这里注意 谁调用before方法 this 是谁
    return  () => {
        callback();
        this(); 
    }
};

// 然后 say.before 进行调用 传入一个方法(这个方法就是我们需要拓展的业务),
// 然后 say.before 执行,返回一个函数,变量beforeSay接收
let beforeSay = say.before(function () {
    console.log('before say');
});

// beforeSay执行,其实就是 before 返回的方法执行
beforeSay();

总结


看到这里你应该对高阶函数有初步的认识了吧,但要熟练的运用在开发中,还需要我们更深入的去了解它们内在的含义。 
第一次写分享欢迎前辈们指正不对的地方 --- 一个在前端路上奔跑的小白