JavaScript函数柯里化,我们直接来看一段普通的代码:
function (a, b, c) {
return a + b + c
}
上面这个函数很简答, 就是对传入的a、b、c参数进行了计算,现在我们改成柯里化的形式:
function curry(a) {
return function (a) {
return function (b) {
returen a + b + c
}
}
}
你会发现,将普通函数改成柯里化的形式无非就是嵌套返回多个函数,我们在调用的时候,只需要这样调用:
// 调用柯里化函数
const n1 = curry(1)(2)(3); // 6
// 或者
const n2 = curry(1);
const n3 = n2(2)(3); // 6
调用也很简单,就是将返回的函数在执行一下
柯里化的应用场景
某商店售卖一件商品,原价1000元, 上新时9折 过季了5折 甩卖时2折
// 封装一个计算函数
function salePrice (price, discount) {
return price * discount;
}
const price1 = salePrice(1000, 0.9); // 上新时9折
const price2 = salePrice(1000, 0.5); //过季了5折
const price2 = salePrice(1000, 0.2); //甩卖时2折
如果我们改成柯里化的形式:
// 柯里化的形式
function countPrice(price) {
return (discount) => {
return price * discount;
}
}
const salePrice = countPrice(1000);
const price1 = salePrice(0.9); // 上新时9折
const price2 = salePrice(0.5); //过季了5折
const price2 = salePrice(0.2); //甩卖时2折
我们通过柯里化的形式,省去了频繁传递公用的参数,这就是柯里化的作用, 可以更轻松的重用和配置。
柯里化优点:
更轻松的配置和重用代码;
避免频繁的传递重复的参数。