无状态 & 无副作用
a. 无状态 - 数据不可变 --- 不可操作改变数据源
b. 无副作用 - 函数内部不可对系统任何参数/变量进行改动
函数柯里化
// f(x, y, z) => f(x)(y)(z)
// 实现一个add(1)(2)(3)(4)...累加函数
// 1. 构造柯里化结构
// 2. 输入 处理外层arguments => 类数组处理
// 3. 传入参数无限拓展 => 递归 => 返回递归函数本身
// 4. 主功能 累加
// 5. 输出 从函数到产出 toString
const add = function() {
// 输入处理
let args = Array.prototype.slice.call(arguments);
// 构造柯里化结构
let inner = function() {
// 主功能
args.push(...arguments);
return inner;
}
inner.toString = function() {
args.reduce((pre, cur) => {
return pre + cur;
})
}
return inner;
}