函数柯里化

定义

多个参数的传入 把他转成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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容