0
点赞
收藏
分享

微信扫一扫

函数柯里化

Mezereon 2021-09-23 阅读 76

定义

多个参数的传入 把他转成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
举报

相关推荐

0 条评论