函数柯里化

函数柯里化与函数绑定密切相关,它用于创建已经设置好了一个或多个参数的函数。
基本方法和函数绑定一样:使用一个闭包返回一个函数。两者的区别在于,当函数被调用时,返回的函数还需要设置一些传入的参数。

function add(num1, num2){
	return num1 + num2;
}
function curriedAdd(num2){
	return add(5, num2);
}
alert(add(2, 3)); // 5
alert(curriedAdd(3)); // 8

尽管curriedAdd()并非柯里化函数,但它很好地展示了其概念。

柯里化函数通常由以下步骤动态创建:调用另一个函数并为它传入要柯里化的函数和必要参数。

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);
	};
}

function add(num1, num2){
	return num1 + num2;
}
var curriedAdd = curr(add, 5);
alert(curriedAdd(3)); // 8

function add(num1, num2){
	return num1 + num2;
}
var curriedAdd = curry(add, 5, 12);
alert(curriedAdd()); // 17

curry()函数的主要工作就是将返回函数的参数进行排序。
curry()的第一个参数是要进行柯里化的函数,其他参数是要传入的值

函数柯里化还常常作为函数绑定的一部分包含在其中,构造出更为复杂的bind()函数。

function bind(fn, context){
	var args = Array.prototype.slice.call(arguments, 2);
	return function(){
		var innerArgs = Array.prototype.slice.call(arguments);
		var finalArgs = args.concat(innerArgs);
		return fn.apply(context, finalArgs);
	};
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值