首页 > 代码库 > js curry化
js curry化
第一篇文竟然是curry开始……
柯里化是什么(抄的):柯里化是这样的一个转换过程,把接受多个参数的函数变换成接受一个单一参数的函数,如果其他的参数是必要的,返回接受余下的参数且返回结果的新函数。
柯里化的作用感觉上就是把函数分成多段来完成,也许可以方便测试吧
但是至少,可以减少重复的参数
最简单的例子
function curry() {
return function (a) {
return function (b) {
return a+b+5;
}
}
}
var test = curry();
console.log(test(1)(2));
console.log(test(3)(4));
通过curry化,原来需要传2个参数的函数变成1次传1个参数
例子2
function curry(){
var arrayArgs = Array.prototype.slice.apply(arguments);
return function(){
//这个arguments是调用它的函数的arguments,在本例中即为test的arguments
var wholeArgs = arrayArgs.concat(Array.prototype.slice.apply(arguments));
return wholeArgs;
}
}
var test = curry(‘fixed‘);
var result = test(‘new1‘,‘new2‘);
for(var i in result )
console.log(result[i]);
var result = test(‘new3‘);
for(var i in result )
console.log(result[i]);
这样的话,fixed只需要1次,之后使用的时候再也不用重复输入了
当然 可以让curry设置成接受高阶函数,这样会更灵活
还有一些作用,如延迟计算等,因为curry化有点难,似乎带来的效果也不会很好(似乎),所以先不写了
js curry化