news 2026/11/3 20:42:42

【前端手撕】函数柯里化curry

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【前端手撕】函数柯里化curry

柯里化是把一个接受多个参数的函数,转换成接受单一参数(或部分参数)并返回一个新函数,直到收到全部所需参数后才执行原函数的过程。

例如:

function add(a, b, c) { return a + b + c } const curriedAdd = curry(add); curriedAdd(1)(2)(3) // 6 curriedAdd(1, 2)(3) // 6 curriedAdd(1)(2, 3) // 6

本质是参数收集,当收集到的参数个数达到原函数定义的形参个数(fn.length)时,就调用原函数。

代码

const curry = (fn, ...args) => { if (args.length >= fn.length) { return fn(...args) } else { return (...rest) => { return curry(fn, ...args, ...rest) } } }

注意:这里的fn.length是函数定义时声明的形参个数(不包括剩余参数)。一般这个实现是针对常规固定参数函数的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 20:42:27

YOLOv5实战指南:从ONNX模型到Android端高效部署

1. YOLOv5模型转换全流程解析 第一次把YOLOv5模型部署到Android端时,我对着各种格式转换工具发懵——PT、ONNX、NCNN这些名词看得人眼花缭乱。后来踩过几次坑才发现,其实只要掌握关键步骤,整个过程就像组装乐高积木一样有章可循。 先说说为什…

作者头像 李华
网站建设 2026/11/3 20:42:28

过拟合诊断与防治:从数据根因到工业级七层防御体系

1. 这不是模型“学得太好”,而是它在考试前偷偷背了答案“过拟合”这个词,刚接触机器学习的人常会下意识理解成“模型太复杂”“参数太多”“训练时间太长”——听起来像是一种“用力过猛”的褒义偏差。但实际工作中,我见过太多团队花三周调参…

作者头像 李华
网站建设 2026/11/3 20:41:03

嵌入式硬件加密引擎原理与应用:以MPC8313E SEC 2.2为例

1. 项目概述:当通信处理器遇上硬件加密在嵌入式网络设备开发领域,性能与安全往往是一对需要权衡的矛盾。软件加密固然灵活,但在处理高速网络数据流时,CPU资源会被大量消耗,导致转发性能瓶颈。而硬件加密,则…

作者头像 李华
网站建设 2026/10/30 2:19:09

FigmaCN完整指南:3分钟免费实现Figma中文界面的终极解决方案

FigmaCN完整指南:3分钟免费实现Figma中文界面的终极解决方案 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗?想要专注于创意设计…

作者头像 李华
网站建设 2026/10/30 6:24:20

如何用River实现智能作业状态控制:取消、暂停与小憩的完整指南

如何用River实现智能作业状态控制:取消、暂停与小憩的完整指南 【免费下载链接】river Fast and reliable background jobs in Go 项目地址: https://gitcode.com/gh_mirrors/river/river River作为Go语言中最强大的背景作业处理框架之一,提供了灵…

作者头像 李华