如何写好JavaScript | 青训营笔记

98 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第四天

上一篇主要讨论的编码中各司其职的原则,今天记录一下过程抽象的原则。

什么是过程抽象?

过程抽象

  • 用来处理局部细节控制的一些方法
  • 函数式编程思想的基础应用

未来前端的发展趋势是函数式编程的,因此平常学习中要更加注重抽象的能力的培养

怎么抽象?

应用函数式编程思想,是处理局部细节控制的方法。

举例:节流、防抖等方面的应用。

纯函数:返回结果只依赖于它的参数,并且在执行过程里面没有副作用

优点:

  • 方便进行单元测试!
  • 减少系统中非纯函数的数量,从而使得系统可靠性增加

高阶函数就是函数中可以传入另一个函数作为参数的函数

  • 以函数作为参数
  • 以函数作为返回值
  • 常用于作为函数装饰器

常用的高阶函数

  • Once:对某个操作的执行次数进行限制
  • Throttle:节流函数,限制函数触发的频率,每个delay时间间隔,最多只能执行函数一次
  • Debounce:减少函数触发的频率,在一定延迟后才执行。从触发开始到延迟结束,只执行函数一次
  • Consumer:接受一个输入参数并且无返回的操作,如果某一类操作不需要返回接口,可以对该类操作抽取逻辑。
  • Iterative:支持多个参数迭代求解

比如:

  function HOF0(fn) {
    return function(...args) {
      return fn.apply(this, args);
    }
  }

编程范式

尽量使用声明式,不要用命令式。

命令式

 let list = [1, 2, 3, 4];
   let mapl = [];
   for(let i = 0; i < list.length; i++) {
     mapl.push(list[i] * 2);
   }
复制代码

声明式

 let list = [1, 2, 3, 4];
   const double = x => x * 2;
   list.map(double);
复制代码

总结:

在编写代码的过程中,不仅要注重功能的实现,还要思考如何写出优雅的代码,要有这样的意识。