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()

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

相关推荐
时空系18 分钟前
第7篇功能——打造你的工具箱 python中文编程
开发语言·python·ai编程
shughui18 分钟前
2026最新JDK版本选择及下载安装详细图文教程【windows、mac附安装包】
java·linux·开发语言·windows·jdk·mac
Wenzar_18 分钟前
# D3.js实战进阶:从基础图表到交互式数据仪表盘的全流程构建在现代前端开发中,**数据可视化已成为提升用户体验的核心能力之一
java·javascript·python·信息可视化·ux
菜鸟小码21 分钟前
MapReduce 编程模型详解:Mapper、Reducer、Driver 三大核心组件
大数据·javascript·mapreduce
AI玫瑰助手22 分钟前
Python基础:集合的定义、去重与交并差运算
开发语言·python·信息可视化
无敌秋23 分钟前
# C++ 工厂方法模式实战指南
开发语言·c++·设计模式
林恒smileZAZ43 分钟前
CSS 滚动驱动动画(scroll-timeline):无 JS 实现滚动特效
前端·javascript·css
skywalk81631 小时前
CodeArts碰到问题:CodeArts 智能体使用失败,显示:会话创建失败,请稍后重试
开发语言·python
懒人村杂货铺1 小时前
Express + TypeScript 后端通用标准规范
javascript·typescript·express
白露与泡影1 小时前
从区间锁到行锁:一次高并发写入死锁治理实战
java·开发语言