这是我参与「第四届青训营 」笔记创作活动的第N天
今日学习打卡
本次跟着月影老师的javascript课程,谈到了高阶函数与函数式编程的思路,使我对JavaScript的过程抽象有了新的认识和收获。首先让我们来认识一下,高阶函数是什么?
高阶函数是什么?
高阶函数就是可以将另一个函数作为参数的函数,或者返回一个函数作为结果的函数.
有一点类似于递归函数,或者是数学里当中的复合函数概念,但其中还是有不小差别。
函数作为参数传递
把函数当作参数传递,这意味着我们可以抽离出主要发生变化、常发生变化的业务逻辑来作为函数参数,体现了一定的分离与封装的思想,具体实现也就是我们常见的回调函数。
- Once() “只执行一次“
这里可以看月影老师的例子,当我们需要限制操作执行次数时(如异步交互、http请求等),就可以用到 Once()
可以看到这里Once() 函数就是以一个函数为参数传入,我们为了能够让“只执行一次“的需求覆盖不同的事件处理,我们可以将这个需求剥离出来。
这个过程我们称为过程抽象。
-
HOF
- 以函数作为参数
- 以函数作为返回值
- 常用于作为函数装饰器
下面是月影老师的高阶函数等价范式:
function HOF0(fn) {
return function(...args) {
return fn.apply(this, args);
}
}
二、函数作为返回值输出
相比把函数当作参数传递,函数当作返回值输出的应用场景在JavaScript当中也很多,也更能体现JavaScript的特性。让函数继续返回一个可执行的函数,意味着运算过程是可延续的。
明天继续更新.........