js函数柯里化

柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)(c)。

  • 柯里化包装函数
function curry(func) {
    return function curried(...args) {
        if(args.length >= func.length) {
            return func.apply(this, args)
        }else {
            return function(...argsNext) {
                return curried.apply(this, [...args, ...argsNext])
            }
        }
    }
}
  • 测试
function sum(a, b, c) {
    return a *  b * c
}

let cSum = curry(sum)

console.log( cSum(2, 2, 2) )
console.log( cSum(2, 2)(2) )
console.log( cSum(2)(2)(2) )
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在正式聊函数柯里化之前,我这里给大家补充下高阶函数的概念和应用: 1.1、什么是高阶函数?高阶函数英文叫 High...
    天問_专注于大前端技术阅读 3,808评论 0 6
  • 柯里化: 一个函数原本有多个参数, 之传入一个参数, 生成一个新函数, 由新函数接收剩下的参数来运行得到结构. 为...
    攻城熊阅读 836评论 2 0
  • 第一次看到柯里化这个词的时候,还是在看一篇算法相关的博客提到把函数柯里化,那时一看这个词就感觉很高端,实际上当你了...
    flowsands阅读 233,126评论 40 282
  • 什么是柯里化? 维基百科上说道:柯里化,英语:Currying(果然是满满的英译中的既视感),是把接受多个参数的函...
    Mica_马超阅读 257评论 0 2
  • 柯里化的定义 官方定义: 计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最...
    amaze_y阅读 157评论 0 0