JavaScript 函数柯里化的应用场景

什么是函数柯里化?

函数柯里化就将一个多参数的函数转换为只能接收一个参数的函数。通过柯里化,可以将函数的参数逐步应用,形成一个参数序列,使得函数的调用更加灵活,方便参数的复用和定制。

简单来说就是简化函数的参数接收,将多个参数尽可能的变少

简单示例

javascript 复制代码
// 普通的加法函数
function add(x, y) {
  return x + y;
}
console.log(add(2, 3)) // 输出 5

// 使用柯里化转换的加法函数
function curryAdd(x) {
  return function(y) {
    return x + y;
  }
}

const addTwo = curryAdd(2);
console.log(addTwo(3)); // 输出 5

大家可能会觉得这样做多此一举,直接传2个参数不更好吗,根据这个代码来说确实如此。

但有些场景使用函数柯里化就显得非常 Nice

应用场景

参数冗余

常规实现:参数过于冗余

javascript 复制代码
function url(proto, host, patch) {
  return `${proto}${host}${patch}`
}

url('https://', 'liuyuyang.net', '/api/get/1')
url('https://', 'liuyuyang.net', '/api/post')

柯里化实现:减少参数冗余

javascript 复制代码
function url(proto, host) {
  return function (patch) {
    return `${proto}${host}${patch}`
  }
}

const newUrl = url('https://', 'liuyuyang.net')
newUrl('/api/get/1')
newUrl('/api/post')

延迟执行

javascript 复制代码
function fn() {
  console.log("在执行内部函数之前做一些事情");

  return function () {
    // 代码逻辑
  }
}

const newFn = fn()
newFn()

函数柯里化在函数式编程中非常常见,它能够提高代码的可读性、可维护性和可复用性,使代码更加灵活和模块化。

相关推荐
懂点Tech4 小时前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
云和数据.ChenGuang4 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
美狐美颜SDK开放平台5 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
dtq04245 小时前
C++小案例 - 日志实战
开发语言·c++
星夜离尘565 小时前
MATLAB ADC 码流触顶诊断:命中数、缺口分段与削顶不可辨识性
开发语言·matlab
码匠许师傅6 小时前
【C++三方组件】Qt 概览:桌面 C++ 的事实标准与许可证三轨
开发语言·c++·qt
码匠许师傅7 小时前
【C++三方组件】POCO:跨平台系统编程全家桶
开发语言·c++
米米商聊7 小时前
同名附件为什么被 Map 覆盖?重复键与一对多索引
前端·javascript
bkspiderx7 小时前
基于Socket的广播通信及C语言实现详解
c语言·开发语言·socket·广播·socket的广播通信
小王C语言7 小时前
Qt常用控件:输入类控件,单行/多行输入框、下拉框、(日期)微调框、旋钮、滑动条
开发语言·qt