首页 > 其他 > 详细

函数柯里化

时间:2017-01-31 18:29:08      阅读:237      评论:0      收藏:0      [点我收藏+]

函数柯里化传入不同参数得到不同返回

var greetCurried = function(greeting) {
  return function(separator) {
    return function(emphasis) {
      return function(name) {
        console.log(greeting + separator + name + emphasis);
      };
    };
  };
};

使用:

var sayHello = greetDeeplyCurried("Hello")(", ");
sayHello(".")("Richard"); //"Hello, Richard."
sayHello(".")("lann"); //"Hello, lann."
var sayHi = greetDeeplyCurried("Hi")(", ")("!");
sayHi(".")("Richard"); //"Hi, Richard!"
sayHi(".")("lann"); //"Hi, lann!"

创建柯里化函数方式:

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

使用:

function add(num1,num2){
    return num1+num2;
}
var curriedAdd=curry(add,4,67);
console.log(curriedAdd());//71

bind()函数将函数柯里化作为函数绑定的一部分:

function bind(fn,context){//接受函数和一个object对象
    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);
    };
}

 

函数柯里化

原文:http://www.cnblogs.com/rlann/p/6358953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!