函数柯里化是一种函数转化方法,也是一种高阶函数,可以将一个接收多个参数的函数转化为只接收部分参数的函数。
函数柯里化实现:
function curry(fn, args) { var num = fn.length; args = args || []; return function() { // arr 用于收集传入的参数 var arr = [].slice.call(arguments); // 将之前收集的参数合并到 arr arr = arr.concat(args); // 如果收集到的参数个数未达到 num,则递归调用继续收集参数 if (arr.length < num) { return curry.call(this, fn, arr); } // 当收集到的参数个数达到 num, 就执行 fn return fn.apply(this, arr); } }