前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数柯里化

函数柯里化

原创
作者头像
菜园前端
修改2023-06-06 21:36:09
2370
修改2023-06-06 21:36:09
举报
文章被收录于专栏:前端学习文档前端学习文档

原文链接:https://note.noxussj.top/?source=cloudtencent

什么是函数柯里化?

函数柯里化(Haskell Brooks Curry),当一个函数有多个参数的时候先传递一部分参数并且调用它(这部分参数后续不会进行改变),然后返回一个新的函数接收剩余的参数并返回结果。

总结

  • 柯里化可以让我们给一个函数传递较少的参数得到一个已经记住了某些固定参数的新函数
  • 这是一种对函数参数的 "缓存"
  • 让函数变的更灵活,让函数的粒度更小

基础案例#

案例 1

代码语言:javascript
复制
function checkAge(arg1) {
    return function (arg2) {
        return arg2 >= arg1
    }
}

// 检查是否大于 18 岁
let checkAge18 = checkAge(18)

// 检查是否大于 20 岁
let checkAge20 = checkAge(20)

console.log(checkAge18(19)) // true
console.log(checkAge20(19)) // false

案例 2

代码语言:javascript
复制
// 封装柯里化函数
function curry(fn) {
    return function curriedFn(...args) {
        if (args.length < fn.length) {
            return function (...args2) {
                return curriedFn(...args.concat(Array.from(args2)))
            }
        }
        return fn(...args)
    }
}

function getSum(a, b, c) {
    return a + b + c
}

const curried = curry(getSum)

const fn1 = curried(1) // 返回新函数,接收剩余的参数

const fn2 = fn1(2) // 返回新函数,接收剩余的参数

const fn3 = fn2(3) // 返回结果 6

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是函数柯里化?
  • 基础案例#
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档