函数式编程
纯函数(Pure Function)
输入输出数据流全是显式(Explicit)的函数
副函数
除了返回可能的函数值之外,还对主调用函数产生附加的影响
console.log(有额外输出) ,ajax(无法固定输出)都不是纯函数
为什么一定要纯函数:
副函数强化了程序的能力,却弱化了程序的数学性。让 JS 函数和数学函数的行为对齐。
既:数学化的 JS 函数 === 纯函数
1 拒绝副作用,拥抱纯函数
“一等公民”的本质:JS 函数是可执行的对象
function baseAdd(a) {
return (b) => {
return a + b
};
};
const addWithOne = baseAdd(1)
// .... (也许在许多行业务逻辑执行完毕后)
const result = addWithOne(2)
2 函数是“一等公民”
3 避免对状态的改变(不可变值)
通过深拷贝,保证传递的值
通过持久性存储,实现拷贝,通过部分地址修改拷贝不是万能解药
Proxy 代理模式,在geeter或setter时,触发拷贝。

浙公网安备 33010602011771号