码迷,mamicode.com
首页 > Web开发 > 详细

js curry化

时间:2016-11-28 07:27:54      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:who   需要   函数   res   变换   on()   nbsp   type   log   

第一篇文竟然是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化

标签:who   需要   函数   res   变换   on()   nbsp   type   log   

原文地址:http://www.cnblogs.com/photon-phalanx/p/6107713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!