函数柯里化的适用场景有:
1. 参数复用
2. 延时执行
3. 提前确认
函数柯里化的核心在于:函数里面返回函数,从而做到参数复用的目的。
我们以一个js经典面试题为例开始讲解:
实现一个函数,使得满足以下几个要求:
add(1)(2)(3)(4)//输出10
add(1,2)(3)(4)//也输出10
add(1)(2,3)(4)//也输出10
这是一道经典的函数柯里化手撕题,我们来讲一下该函数的具体实现:
因为函数柯里化的核心就是 函数里面返回函数,因此我们可以初始构造一个柯里化函数框架:
//初步构造柯里化的结构
function add(){
//let args = arguments;//用于获取第一个括号里的参数
// 因为arguments是类数组结构,因此上述代码还需要进行改进,下面这行才是正确的
let args = Array.prototype.slice.call(arguments);
let inner = function(){
args.push(...arguments);
}
return inner;
}
返回结果如下图所示:
当add(1)只有一个参数时,返回了一个函数,柯里化的目的初步达到。
我们试着再增加一个参数add(1)(2),看看返回结果是什么:<