[ JavaScript原则之过程抽象 | 青训营笔记 ]

80 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第6天。

一、本堂课重点内容

本节课详细介绍了前端技术栈之一JavaScript的三个编码原则-各司其职、组件封装、过程抽象,本篇笔记将对过程抽象这一原则作记录并提出自己的想法。

二、详细知识点介绍

过程抽象的编码原则

过程抽象这一编码原则的用处在于处理局部细节控制,同时过程抽象也是函数思想的基础。

操作次数限制

操作次数限制常用场景有

  • 一些异步交互
  • 一次性的HTTP请求
function once(fn){ 
    return function(...args){
        if(fn){ //判断函数是否存在,如果存在则用实际参数调用它,然后把它置为空
            const ret = fn.apply(this, args);// 用实际参数执行函数
            fn = null;// 置空,下次就不会执行判断语句里面的内容就不会调用函数
            return ret;// 把fn的结果返回出去
        }
    }
}
function show(a, b) {
    let ans = a + b
    console.log("打一下~");
    return ans
}
let foo = once(show);
console.log(foo(10, 20));//"打一下~ 30

console.log(foo(30, 40));//undeifined
console.log(foo(50, 60));//undeifined

这段代码声明了一个show函数,其中求a+b的和,并且打印了字符串,在下面把这个函数赋值给foo=once(show),然后调用了三次foo(),控制台中只执行的次数为先前所限定的值。

高阶函数

HOH0函数

HOH0函数也叫0级高阶函数,也是等价装饰器,不管你传是什么样的fn都会以原始的参数去执行fn,调用HFH0(fn)去执行等价于直接执行fn,在高阶函数中也叫等价范式,once()和其他函数都是基于该等价范式去扩展。

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

Once函数

为了能够让“只执行一次”的需求覆盖不同的事件处理,我们需要将这个需求剥离处理。

编程范式

  • 编程范式:包括JavaScript等很多现代脚本语言是混合的编程范式,编程范式是有几种分类的,大的分类分成命令式 和声明式。
  • 命令式分成过程式和面向对象;
  • 声明式分成逻辑式和函数式; image.png

Toggle–命令式

Toggle–声明式

Toggle–三态

三、课后个人总结

  • 过程抽象/HOF/装饰器
  • 命令式/声明式

四、引用参考

csdn