1、部分应用函数
场景:第三方函数有两个参数,但是实际情况我们只有一个参数,参数数量不匹配,此种情况,可以利用闭包,先写一个单参数的函数,把函数的整个内容,放到原函数里面,做成闭包,达到利用一个参数就可以调用原来两个参数的函数,达到部分利用函数。
2、示例
function isGoodNumber(goodFactor:number,v:number){
return v % goodFactor === 0
}
function fiterArray(a:number[],f:(v:number) => boolean ){
return a.filter(f)
}
// start config
const GOOD_FACTOR = 3
// end config
//进一步说明部分应用函数。
//已知有需要两个输入参数的函数,实际情况已知一个配置参数和一个输入参数,如何利用?
function partiallyApply(f:(a:number,b:number) => boolean,a:number){
//返回一个函数,只需要一个参数
return (b:number) => {
//闭包
return f(a,b) // a:自由变量,来源于外部
}
}
const a = [1,2,3,5,6,7,9]
console.log(fiterArray(a,(v) => isGoodNumber(GOOD_FACTOR,v))) //[3, 6, 9]
console.log(fiterArray(a,partiallyApply(isGoodNumber,GOOD_FACTOR)))//[3, 6, 9]