柯里化(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个作用: 参数复用、提前返回和 延迟执行
©2018-2020 hongshali.com 版权所有 ICP证:闽ICP备18029655号-1