柯理化函数在带有多个参数的函数入参,降低函数次元的适配应用处理。算是函数闭包的应用之一。
举个例子
一个函数const fun = function(a, b, c) {
return a + b + c;
}
常规下要使用这个函数的方式为 fun(1, 2, 3);
问题点,
现在要多次调用这个函数 但是第二个参数始终为2,
调用的方式为fun(1, 2, 3); fun(1, 4, 1); fun(1, 8, 6);
上述情况的优化方案。
首先优化fun函数
改为 const fun = function(a) {
return (b) => {
return (c) => {
console.log(a + b + c);
}
}
}
调用方式改为fun(a)(b)(c);
调用时可以使用let a = fun(1);此时的参数a在fun中因为闭包特性fun在执行后不会被销毁。
同时调用后返回入参为b的新函数b();同理c的用法也一样
所以写法也可以改为
let a = fun(1);// 第一个参数都为1的情况下只声明一次就行。
let b = a(2);// 第二个参数可以单独声明
let c = a(4);