// 没有柯里化的实现functionsum1(a, b, c){
return a + b + c
}
console.log(sum1(1, 2, 3)); // 6// 转为柯里化functionsum2(a){
returnfunction(b){
returnfunction(c){
return a + b + c
}
}
}
函数柯里化简写
// 上述柯里化简写constsum3 = a => b =>c => a + b + c
console.log(sum3(1)(2)(3)); // 6
函数柯里化使用案例
// 函数功能尽可能单一的柯里化案例functionfunc1(a){
a += 2returnfunction(b){
b *= 2returnfunction(c){
c **= 2return a + b + c
}
}
}
console.log(func1(1)(2)(3)); // 16
函数柯里化工厂函数
// 自动处理柯里化函数functionmyCurried(fn){
returnfunctioncurry(...args1){
if(args1.length >= fn.length){ // fn.length获取的是函数传入参数的长度return fn.call(null, ...args1)
}else{
returnfunction(...args2){
return curry.apply(null, [...args1, ...args2])
}
}
}
}
functionsum(a, b, c, d, e){
return a + b + c + d + e
}
let resFunc = myCurried(sum)
console.log(resFunc(1)(2)(3)(4)(5));
console.log(resFunc(1, 2)(3)(4)(5));
console.log(resFunc(1, 2, 3)(4)(5));
console.log(resFunc(1, 2)(3, 4)(5));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码