柯理化存在的意义,降低通用性,提高适用性。
柯理化的第一个特点:参数复用。
先实现一个简单的功能。最终效果add(1,2,3) 的结果等同于add(1)(2)(3).
let add = function (a, b, c) {
return a + b + c;
}
console.log(add(1,2,3); // 6
//实现柯理化
let add = function(a) {
// 这里有大量的计算
return function(b) {
// 这里有大量的计算
return function(c) {
return a + b + c;
}
}
}
let add1 = add(1);
let add2 = add1(2);
console.log(add(1)(2)(3));
// 结果等价于
console.log(add2(3));
// 下面假设,如果我们要计算 1+ 2+ 4; 1+ 2+ 5;(只有最后一个参数变,前两个数不变。)如果是
这样的话,只需要调用add2(4); add2(5);即可。不需要重复的计算add(1)和add1(2);
那么这么做有什么意义呢?意义在于如果add(1) 和 add1(2)中存在大量的运算。那这样的话可以减少很多
运算量(看上面函数中的注释)