当你在实作一个模组,若过公开全部的参数介面,那其实就失去模组化的意义了,因为你等於将全部的操作都交给外部参数,就跟没模组化一样。
像以下是个计算点击次数的模组
const clickTimes = {
times:0,
increment(){
times++;
}
decrement(){
times--;
}
read(){
return times;
}
}
export const {increment,decrement, read} = clickTimes;
// 这边只公开 increment,decrement, read 的取用方式,避免外部使用者使用 times
像前几章我们有提到 function 里面的状态因为来自外部,所以会造成 side project 的问题,而当
状态越来越多,程序码越多越多就越难以管理,这时候我们就需要 pure function 的写法。
例如我们有个计算数值相加的函式
let books = 10;
let pen = 200;
const sumProduct = ()=>{
return books+pen;
}
sumProduct();
// 注意到了吗?假设我们的 books 和 pen 会被其他程序影响,
// 那我们用 sumProduct 计算出来的数量永远会不正确
以上是不纯的函数,因为 sumProduct 会受到 books 和 pen 的状态影响
那纯函数怎麽实作呢?我们要确保函式只负责 imput 然後执行功能 output 这样,
以下是纯函式:
const sum = (numbers)=>{
return numbers.reduce((total,current)=>total+current,0);
}
sum([books,pen])
这样的写法是不是乾净许多, sum 只要专注传入的数值,加总後呈现应该有的结果,
过程中不管状态,只专注在功能,这样就是纯函式,其实他也是设计模式的工厂模式。
<<: Day15 竞合的团队气氛塑造 - Release line
>>: DAY18-Mongo db atlas realm
好的,要能将资料写进MongoDB,首先我们需要先安装MongoDB: https://www.mo...
Microsoft 365 security portal提供目标导向的使用者介面,以降低Micro...
前言 前面介绍的工具都是命令行工具,但存在着一些的不便 分析数据透过终端机文字的方式显示,不够直觉 ...
常常有时候在阅读较大的专案时 没有定位档案位置的功能的话很难找到该 Class 的位置 大家可以找到...
今天好累,直接上题目 题号:36 标题:Valid Sudoku 难度:Medium Determi...