摘要:百科以上就是一个简单的函数柯里化的实现。运用为什么要封装一层呢就要说到柯里化的运用了。中最最经典的柯里化运用就是了,用于函数的值绑定,同时并非让函数立即执行。
概念
是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。 from wiki百科
Function.prototype.curry = function() { let args = arguments; let that = this; return function() { return that.apply(null, [...args].concat(...arguments)); } } function add() { let args = [...arguments]; let sum = 0, i = 0; while(i < args.length) { sum += args[i]; i++; } return sum; } console.log(add.curry(2, 3)(4)) // 9
以上就是 一个简单的函数柯里化的实现。
运用为什么要封装一层呢?就要说到柯里化的运用了。js中最最经典的柯里化运用就是bind了, 用于函数的this值绑定, 同时并非让函数立即执行。
// bind实现 Function.prototype.bind = function (context) { var that = this var args = Array.prototype.slice.call(arguments, 1) return function() { return that.apply(context, args) } }
还有一些网上的例子,日常开发中也常常会用到,如参数复用。
引用https://www.jianshu.com/p/297...
// 函数封装后 function check(reg, txt) { return reg.test(txt) } check(/d+/g, "test") //false check(/[a-z]+/g, "test") //true // Currying后 function curryingCheck(reg) { return function(txt) { return reg.test(txt) } } var hasNumber = curryingCheck(/d+/g) var hasLetter = curryingCheck(/[a-z]+/g) hasNumber("test1") // true hasNumber("testtest") // false hasLetter("21212") // false
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/104558.html
摘要:柯里化通用式上面的柯里化函数没涉及到高阶函数,也不具备通用性,无法转换形参个数任意或未知的函数,我们接下来封装一个通用的柯里化转换函数,可以将任意函数转换成柯里化。 showImg(https://segmentfault.com/img/remote/1460000018998373); 阅读原文 前言 在 JavaScript 中,柯里化和反柯里化是高阶函数的一种应用,在这之前...
摘要:函数柯里化是把支持多个参数的函数变成接收单一参数的函数,并返回一个函数能接收处理剩余参数,而反柯里化就是把参数全部释放出来。但在一些复杂的业务逻辑封装中,函数柯里化能够为我们提供更好的应对方案,让我们的函数更具自由度和灵活性。 showImg(https://segmentfault.com/img/bVburN1?w=800&h=600); 柯里化(Curring, 以逻辑学家Has...
摘要:作为函数式编程语言,带来了很多语言上的有趣特性,比如柯里化和反柯里化。在一些函数式编程语言中,会定义一个特殊的占位变量。个人理解不知道对不对延迟执行柯里化的另一个应用场景是延迟执行。不断的柯里化,累积传入的参数,最后执行。作为函数式编程语言,JS带来了很多语言上的有趣特性,比如柯里化和反柯里化。 这里可以对照另外一篇介绍 JS 反柯里化 的文章一起看~ 1. 简介 柯里化(Currying)...
摘要:作为函数式编程语言,带来了很多语言上的有趣特性,比如柯里化和反柯里化。个人理解不知道对不对延迟执行柯里化的另一个应用场景是延迟执行。不断的柯里化,累积传入的参数,最后执行。 作为函数式编程语言,JS带来了很多语言上的有趣特性,比如柯里化和反柯里化。 这里可以对照另外一篇介绍 JS 反柯里化 的文章一起看~ 1. 简介 柯里化(Currying),又称部分求值(Partial Evalu...
摘要:如果你对函数式编程有一定了解,函数柯里化是不可或缺的,利用函数柯里化,可以在开发中非常优雅的处理复杂逻辑。同样先看简单版本的方法,以方法为例,代码来自高级程序设计加强版实现上面函数,可以换成任何其他函数,经过函数处理,都可以转成柯里化函数。 我们经常说在Javascript语言中,函数是一等公民,它们本质上是十分简单和过程化的。可以利用函数,进行一些简单的数据处理,return 结果,...
摘要:函数被转化之后得到柯里化函数,能够处理的所有剩余参数。因此柯里化也被称为部分求值。那么函数的柯里化函数则可以如下因此下面的运算方式是等价的。而这里对于函数参数的自由处理,正是柯里化的核心所在。额外知识补充无限参数的柯里化。 showImg(https://segmentfault.com/img/remote/1460000008493346); 柯里化是函数的一个比较高级的应用,想要...
阅读 3163·2023-04-26 03:06
阅读 3675·2021-11-22 09:34
阅读 1120·2021-10-08 10:05
阅读 3005·2021-09-22 15:53
阅读 3446·2021-09-14 18:05
阅读 1317·2021-08-05 09:56
阅读 1783·2019-08-30 15:56
阅读 2103·2019-08-29 11:02