函数柯里化

作者: vivianXIa | 来源:发表于2021-04-01 14:22 被阅读0次

    定义

    多个参数的传入 把他转成n个函数 可以暂存变量

    function curring(fn) {
      //存储每次调用的时候传入的变量
      const inner = (args = []) => {
        //存储每次调用传入的参数
        return args.length >= fn.length? fn(...args): (...userArgs) => inner([...args, ...userArgs]);
        //递归返回函数
      };
      return inner();
    }
    

    例子:

    柯里化判断 数据类型(参数复用的场景)

    function isType(typing,val) {
        return Object.prototype.toString.call(val) == `[object ${typing}]`;
    }
    //实现通用的柯里化函数:高阶函数
    function curring(fn) {
      //存储每次调用的时候传入的变量
      const inner = (args = []) => {
        //存储每次调用传入的参数
        return args.length >= fn.length? fn(...args): (...userArgs) => inner([...args, ...userArgs]);
        //递归返回函数
      };
      return inner();
    }
    let util = {};
    ['String','Number','Boolean','Number','Undefined'].forEach(type => {
      util["is"+type] = curring(isType)(type)
    });
    
    console.log(util.isString('12121')); //true
    

    相关文章

      网友评论

        本文标题:函数柯里化

        本文链接:https://www.haomeiwen.com/subject/sretkltx.html