Shaoli's Blog

初识 JS 中的柯里化

柯里化


柯里化(Currying),又称部分求值(Partial Evaluation),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

核心思想是把多参数传入的函数拆成单参数(或部分)函数,内部再返回调用下一个单参数(或部分)函数,依次处理剩余的参数。


// 柯里化(参数复用,延迟执行,参数私有化,提高适用性)
function currying(fn, ...args{
  if(args.length === fn.length) {
    return fn(...args)
  }
  return (...rest) => currying(fn, ...args, ...rest)
}


const curryPlus = currying((a, b, c, d) => a + b + c + d)
curryPlus(1)(2,3,4// 10
curryPlus(1)(2)(3)(4// 10
curryPlus(1,2)(3)(4// 10
curryPlus(1,2)(3,4// 10
curryPlus(1)(2,3)(4// 10
curryPlus(1,2,3)(4// 10
curryPlus(1,2)(3,4// 10
curryPlus(1,2,3)(4// 10
curryPlus(1,2,3,4// 10


柯理化的作用主要有3个作用: 参数复用提前返回和 延迟执行

    评论列表

  • 暂无评论...快来说说吧!
person
0 / 16
comment
0 / 100