理解柯里化

本文介绍了JavaScript函数柯里化,展示了将普通函数转换为柯里化形式的代码示例及调用方式。还通过商品折扣计算的场景,说明了柯里化可省去频繁传递公用参数,其优点是能更轻松地配置和重用代码,避免频繁传递重复参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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折

我们通过柯里化的形式,省去了频繁传递公用的参数,这就是柯里化的作用, 可以更轻松的重用和配置。

柯里化优点:

更轻松的配置和重用代码;
避免频繁的传递重复的参数。

转载于:https://juejin.im/post/5d09a8846fb9a07eb74b403e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值