这是我参与「第五届青训营」伴学笔记创作活动的第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等很多现代脚本语言是混合的编程范式,编程范式是有几种分类的,大的分类分成命令式 和声明式。
- 命令式分成过程式和面向对象;
- 声明式分成逻辑式和函数式;
Toggle–命令式
Toggle–声明式
Toggle–三态
三、课后个人总结
- 过程抽象/HOF/装饰器
- 命令式/声明式
四、引用参考
csdn