函数柯里化

函数柯里化,用于创建已经设置好了一个或多个参数的函数。函数柯里化的基本方法和函数绑定是一样的:使用一个闭包返回一个函数。两者的区别在于,当函数被调用时,返回的函数还需要设置一些传入的参数。
函数柯里化通常由一下步骤动态创建:调用另一个函数并为它传入要柯里化的函数和必要参数。

function curry(fn){
  var args = Array.prototype.slice.call(arguments,1);
  return function(){
    var innerArgs = Array.prototype.slice.call(arguments);
    var finalArgs = args.concat(innerArgs);
    return fn.apply(null,finalArgs)
  }
}

curry()函数的主要工作就是将被返回函数的参数进行排序。curry()的第一个参数是要进行柯里化的函数,其他参数是要传入的值。它返回另一个函数,该函数被调用时,会返回调用原始函数的结果,并传递调用curry时的参数加上当前的参数。它使用Array的concat方法连接两个参数数组。
curry()函数可以按以下方式应用。

function add(num1,num2){
  return num1 + num2;
}

var curriedAdd = curry(add,5);
console.log(curriedAdd(3))

在这个例子中,创建了第一个参数绑定为5的add()的柯里化版本。当调用curriedAdd并传入3时,3会称为add()的第二个参数,同时第一个参数依然是5,最后结果便是和8。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容