定義
多個參數(shù)的傳入 把他轉(zhuǎn)成n個函數(shù) 可以暫存變量
function curring(fn) {
//存儲每次調(diào)用的時候傳入的變量
const inner = (args = []) => {
//存儲每次調(diào)用傳入的參數(shù)
return args.length >= fn.length? fn(...args): (...userArgs) => inner([...args, ...userArgs]);
//遞歸返回函數(shù)
};
return inner();
}
例子:
柯里化判斷 數(shù)據(jù)類型(參數(shù)復用的場景)
function isType(typing,val) {
return Object.prototype.toString.call(val) == `[object ${typing}]`;
}
//實現(xiàn)通用的柯里化函數(shù):高階函數(shù)
function curring(fn) {
//存儲每次調(diào)用的時候傳入的變量
const inner = (args = []) => {
//存儲每次調(diào)用傳入的參數(shù)
return args.length >= fn.length? fn(...args): (...userArgs) => inner([...args, ...userArgs]);
//遞歸返回函數(shù)
};
return inner();
}
let util = {};
['String','Number','Boolean','Number','Undefined'].forEach(type => {
util["is"+type] = curring(isType)(type)
});
console.log(util.isString('12121')); //true