Skip to content

JavaScript之函数柯里化 #15

@chenyong9528

Description

@chenyong9528

维基百科中的定义:

柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

看看下面这个例子:

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

console.log(add(1, 2, 7)) // 10

// 柯里化后
const addCurry = curry(add, 1)

console.log(addCurry(2, 7)) // 10

柯里化的过程大概是这样:将函数的参数分开传递,第一次(初始化)传递一个,然后通过闭包把它存起来,返回一个新函数,第二次将剩余的参数传入新函数,并返回调用结果。

所以curry函数大概是这样:

function curry(fn, a) {
  return function(b, c) {
    return fn(a, b, c)
  }
}

通用的柯里化函数:

function curry(fn, ...args) {
  return (..._arg) => {
    return fn(...args, ..._arg);
  }
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions