day118-手写简单的函数柯里化-笔记

前言

函数柯里化是属于高阶函数中一种常见的技术。特点就是参数复用提前返回延迟执行

代码

function curry (fn, args) {
var length = fn.length
var args = args || []
return function () {
newArgs = args.concat(Array.prototype.slice.call(arguments))
if (newArgs.length < length) {
return curry.call(this, fn, newArgs)
} else {
return fn.apply(this, newArgs)
}
}
}

function multiFn(a, b, c) {
return a * b * c
}

var multi = curry(multiFn)

multi(1)(2)(3)
multi(1,2,3)
multi(1)(2,3)
multi(1,2)(3)
文章作者: lmislm
文章链接: http://lmislm.com/2019/05/10/2019-05-10/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog