zoukankan      html  css  js  c++  java
  • 函数柯里化

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

    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);
        };
    }
  • 相关阅读:
    真正明白了引用与对象的关系,就能避开下面这个陷阱
    python 垃圾回收
    字典
    表的操作
    MySQL数据库中的存储引擎
    MySQL数据库的基本操作
    MySQL数据库安装文件夹与配置文件简易说明
    数据库概述
    Arrays类
    Math类
  • 原文地址:https://www.cnblogs.com/rlann/p/6358953.html
Copyright © 2011-2022 走看看