js柯里化

一文搞懂Javascript中的函数柯里化(currying) 在使用JavaScript编写代码的时候,有一种函数式编程的思想,而提到函数式编程,一定绕不开一个概念,那就是柯里化。柯里化是编程语言中的一个通用的概念(不只是Js,其他很多语言也有柯里化),是指把接收多个参数的函数变换成接收单一参数的函数,嵌套返回直到所有参数都被使用并返回最终结果。f(a,b,c)f(a)(b)(c)的过程。柯里化不会调用函数,它只是对函数进行转换。柯里化是一个把具有较多 arity 的函数转换成具有较少 arity 函数的过程 -- Kristina Brainwave。 阅读详情

今天一个不小心在书上又看到了函数柯里化 温故而知新,也顺便再记一笔。这里不介绍什么是柯里化函数。如果不懂的请自行Google。

但是呢,我会从js设计模式这本书中,取一段柯里化代码片断,加上详细的注释。如果Google柯里化后,还是不懂的同学,可以读读这段注释

当然,我推荐你先运行一遍,再去看注释

        var currying = function(fn) {
            //这里保存每次的开销
            var args = [];
            return function() {
                //如果传入的参数长度为0,也就是没有传参的情况下,其实就是告诉程序,我要/求总开销了
                if (arguments.length === 0) {
                    //将fn在这块上下文中执行,并且把每天的开销当做参数传入
                    return fn.apply(this, args);

                //有参数传入的话,就说明还在记录每天的开销,并没有要/求总开销
                } else {
                    //arguments请自行google,它是一个对象并不是一个数组。
                    //将arguments转为数组后push到args
                    //也就是收到每天的开销后,保存到args中
                    [].push.apply(args, arguments);
                    //把这块上下文再次return出去
                    return arguments.callee;
                }
            }
        };
        var cost = (function() {
            //典型的闭包,将money保存起来
            var money = 0;
            //这里就是currying(fn)中的fn
            return function() {
                //arguments其实就是currying中的args
                //收到了求总开销的命令,下面是真正计算总开销的地方
                for (var i = 0, l = arguments.length; i < l; i++) {
                    money += arguments[i];
                }
                return money;
            }
        })();
        var cost = currying(cost); // 转化成currying 函数
        cost(100); // 未真正求值
        cost(200); // 未真正求值
        cost(300); // 未真正求值
        cost(200); // 未真正求值
        cost(200); // 未真正求值
        cost(50); // 未真正求值
        cost(100); // 未真正求值
        alert(cost()); // 求值并输出:600

代码中注释出于本博客 http://blog.youkuaiyun.com/jiestyle21,如果理解有误的地方,请指出。

JS函数柯里化 函数柯里化 今天下午研究了一下函数柯里化,把我能看的困得呀,看完以后,总有种很亏的感觉,感觉浪费了两三个小时,去理解了一个不怎么用的东西,但是作为一个算法的了解,还是写篇博客吧,毕竟看了一下午。 什么是柯里化 比较官方的说法是,把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。 在直觉上,柯里化声称如果你固定某些... 阅读详情

相关推荐

SAP 资产主数据屏幕增强:对比字段追加与子屏幕/页签 2 种方案优劣

本文深入对比了SAP资产主数据(AS01/AS03)屏幕增强的两种方案:字段追加与子屏幕/页签。从技术实现、业务适配、系统维护等维度分析各自优劣,提供方案选型决策树和混合方案实践建议,帮助企业在SAP实施中做出最优选择。

weixin_28559803的博客 284

Javascript 中的柯里化与反柯里化

柯里化是将接受多个参数的函数转换成一系列只接受单个参数的函数的过程。柯里化函数的返回值仍然是一个函数,该函数接受一个参数,并返回一个新的函数,直到所有参数都被处理完毕,最终返回最终结果。反柯里化是将柯里化函数转换成接受多个参数的函数的过程。反柯里化函数的返回值是一个函数,该函数接受一个对象作为参数,并调用该对象的原本方法并传递参数。本文介绍了Javascript中的柯里化和反柯里化技术。柯里化可以将接受多个参数的函数转换成一系列只接受单个参数的函数,从而使得函数更加灵活、可复用和组合。

梦是太匆 1773

团队管理中最棘手的6个问题

研发团队的管理棘手问题,大多集中在。

xiaolyuh的专栏 743

柯里化是什么

柯里化 (Currying): 当一个函数有多个参数的时候先传递一部分参数调用它(这部分参数以后永远不变) 然后返回一个新的函数接收剩余的参数,返回结果 下图示例是普通函数与柯里化函数(纯函数)的对比 //普通的函数 function checkAge (min,age) { return age >= min } console.log(checkAge(18,20)); console.log(checkAge(18,24)) //高进阶纯函数(避免重复的1...

weixin_37883657的博客 3136

量化金融笔记1-股票量化基础

股票量化基础 文章目录什么是股票股票的定义及其诞生所解决的问题股票的主体和流通股票的常规分类股票价格收益率什么是股票价格的收益率股票价格收益率计算在python中的实现两种收益率算法的特点及应用场合股票交易规则场内交易与场外交易A股、B股、H股国内多层次的资本市场股票交易指令和撮合机制股票交易时间股票交易成本股票复权股票数据介绍与提取行业分类和指数行情数据因子数据标的数据基本面数据 什么是股票 股票的定义及其诞生所解决的问题 股票的定义:股票是一种有价证券,是股份有限公司公开发行的用以证明投资者的股东身份

折桂狂人的博客 2395

函数柯里化详解

函数柯里化详解

博哥的二进制世界 1万+

A Mathematical Framework for Transformer Circuits—(二)

transformer数学理论框架

qq_42208244的博客 758

柯里化概念浅析

柯里化的核心:函数分解和延迟执行。通过闭包等方式逐步传递参数,直到所有参数收集完毕后再执行原函数

两只鱼,鱼鱼鱼鱼鱼 1002

避开爬虫坑:手把手教你合法获取百度地图POI边界数据(以学校为例)

本文详细介绍了如何合规获取百度地图POI边界数据的方法论,特别以学校为例。通过解析POI数据结构、合法使用百度地图API接口、优化请求策略以及数据处理技巧,帮助开发者和研究者在遵守平台规则的前提下高效获取地理信息。适用于学术研究、商业分析等多种场景,确保数据采集的合法性与准确性。

weixin_28683065的博客 394

Openclaw 附录B 常用Skills清单

核心作用支持URL、网页、PDF、图片、音频和YouTube视频的摘要与字幕提取,由OpenClaw创始人@steipete开发的官方内置Skill。安装⚠️说明:原推荐的summarize未在ClawHub验证到,YouTube字幕提取功能已内置于summarize中。使用场景“提取这个2小时Next.js教程视频的核心代码逻辑,按章节整理成学习笔记”推荐指数:⭐⭐⭐⭐。

Maynor的博客 857

JavaScript:实现一个JS函数柯里化

???? https://juejin.im/post/5c9c3989e51d454e3a3902b6 什么是柯里化? 在计算机科学中,柯里化(Currying) 是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。 函数柯里化的主要作用和特点就是参数复用、提前返回和延迟执行。 ???? 通用版 function curry(...

Bule_daze的博客 656

python实现DoIP基本通信(收发报文)

python实现DoIP基本通信(收发报文)

天赐好车的博客 895

javascript柯里化

1.什么是柯里化? 柯里化概念其实很简单,只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。 实例: function add(a, b, c, d) { return a + b + c + d; } //通常调用方式 var sum = add(1, 2, 3, 4); //柯里化的调用方式 var curryAdd = Curry(add); var sum = cu...

战场小包的博客 410

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JS中的柯里化

JS中的柯里化 详解JS函数柯里化

来啊 快活啊 440

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

javascript》》ES6》》JS》》柯里化函数

/普通函数 一次传入全部参数// 6//柯里化之后// 6//用箭头函数简化上面写法 柯里化?// 为了方便理解,我把参数收集去掉// 发送 API 请求// 柯里化生成 POST 请求函数// 进一步生成特定路径的 POST 函数。

Kaizen的博客 450

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

详解JS函数柯里化

详解JS函数柯里化 - 简书

qq_45633169的博客 1034

JavaScript柯里化与部分应用

JavaScript作为一门非常灵活的语言,包含许多高级功能来帮助开发者更好地编写代码。柯里化和引用类型就是其中两个重要且实用的高级概念。本文将详细介绍柯里化的用法,以及JavaScript中的值类型和引用类型的区别。这些都是每一位JavaScript开发者都需要深刻理解的知识点。通过学习本文,你将能够熟练使用柯里化技术提高函数的灵活性,并明确理解JavaScript中的值与引用的区别。这将大大提升你的JavaScript编程能力。​。

爱蹦跶的全栈大A阿 1573

JavaScript柯里化

文章目录JavaScript柯里化JavaScript中valueOf、toString的隐式调用JavaScript中valueOf函数与toString方法深入理解 JavaScript柯里化 JavaScript中valueOf、toString的隐式调用 函数add可以实现连续的加法运算 函数add语法如下 add(num1)(num2)(num3)…;//注意这里是省略号哟,无限 使用举例如下: add(10)(10)=20; add(10)(20)(50)=80; add(10)(20)(50

qq_45768871的博客 970

什么是JavaScript函数柯里化

JavaScript函数柯里化是一个非常有趣的话题,它涉及到JavaScript中一些高级的概念和技术,包括函数的高阶特性、闭包和递归等。在本文中,我将向您介绍什么是JavaScript函数柯里化,以及它如何工作和为什么它如此有用。什么是函数柯里化?函数柯里化(Currying)是一种将接受多个参数的函数转化为一系列嵌套的单参数函数的技术。当一个函数被柯里化之后,它就可以像函数管道一样被组合起来,将多个函数嵌套在一起,形成一个处理数据的流水线。

tyxjolin的专栏 881

详解JavaScript函数柯里化

详解JavaScript函数柯里化百度百科对柯里化的解释:在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege

大菜鸟的博客 5577

currying in javascript-js柯里化

柯里化是指将一个多参数的函数转化成更少参数的函数,专业解释看维基百科。柯里化实现是通过把参数列表中的某些参数绑定到首先被调用的函数里,这样这些参数就附加到下一次的调用里。这个有个表现柯里化样子的例子:         babyAnimals是一个柯里化的方法。它的作用是在函数本身彻底执行完之前,对第一个参数的包装。 ‘koalas’被绑定到babyAnimals上,那么我对多个动物的喜欢

crystalNB的专栏 1373

JS之柯里化

文章目录什么是柯里化柯里化的实现高级柯里化 什么是柯里化 柯里化(Currying)是一种关于函数的高阶技术,它不仅被用于JavaScript,也能用于其他语言 柯里化是一种函数 转换,让函数具有完整功能的同时,也能接受可选的参数。它能将一个函数从f(a,b,c)转换为f(a)(b)( c ) 柯里化是一种将函数进行转换的技术,而不会去调用函数 柯里化的实现 实现柯里化 //构造柯里化函数 function curry(fun){ return function(a){ re

simon的博客 383

javascript 柯里化与反柯里化

什么是柯里化?????? 看一段代码: function add(a, b, c) { return a + b + c } 正常调用: add(1,2,3) 但我想这样调用它 add(1)(2)(3); 又或者: add(1)(2,3) 实现这样的功能就是函数柯里化。 先抛几个概念: 接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术; 数学和计算机科学中的柯里化函数,一次只能传递一个

yuxiaoc的博客 287

JavaScript函数柯里化

一次传递所有参数。

2301_82023822的博客 2295
上一篇: js高阶函数
下一篇: nginx反向代理部署nodejs
jiestyle21
博客等级 码龄17年 36粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值