定义
多个参数的传入 把他转成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
网友评论