函数柯里化
今天下午研究了一下函数柯里化,把我能看的困得呀,看完以后,总有种很亏的感觉,感觉浪费了两三个小时,去理解了一个不怎么用的东西,但是作为一个算法的了解,还是写篇博客吧,毕竟看了一下午。
什么是柯里化
比较官方的说法是,把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
在直觉上,柯里化声称如果你固定某些参数,你将得到接受余下参数的一个函数。
我们先看一个非常简单的函数。
现在,我们要实现一个求三个数之和的函数:
function add(x, y, z) {
return x + y + z;
}
console.log(add(1, 2, 3)); //6
这样一个简单的函数,我们可以通过一个柯里化的思想改变一下,只传入一个参数,然后返回的函数处理剩余的参数,可以改写成如下
let add = function(x) {
return function(y) {
return function(z) {
return x + y + z;
};
};
}
let addFirst = add(1);
let addSecond = addFirst(2);
let addThird = addSecond(3);
console.log(addThird); // 6
利用闭包,可以轻易达成这样的效果。
那么接下来,我们将他优化一下。
//柯里化函数
let curryDelay =