柯里化:
理解: 是一種函數(shù)式編程的思想洒忧,將原本接收多個(gè)參數(shù)的函數(shù)受神,轉(zhuǎn)變?yōu)榻邮芤粋€(gè)參數(shù), 使得js更好閱讀俺猿。
優(yōu)點(diǎn):
降低函數(shù)的使用范圍碘举,提高適用性
參數(shù)復(fù)用
列如:
正常正則校驗(yàn)函數(shù)封裝
// 列1:
const checkRegExp(a, b) {
return a.test(b)
}
checkRegExp(/^1[3-9]{1}\d{9}/, '13883889393')
-------------------------------------
// 列2:
function addThreeNum (a, b, c) {
return a + b + c;
}
addTreeNum(6, 9 ,10);// 返回結(jié)果為25
使用柯里化函數(shù) 優(yōu)化后:
// 柯里化 降低使用范圍灵莲,提高適用性
function Exp(regExp: RegExp) {
return (str: string) => {
return regExp.test(str)
}
}
// 手機(jī)號(hào)校驗(yàn) checkingPhoneRegExp(phone)
export const checkingPhoneRegExp = Exp(/^1[3-9]{1}\d{9}/)
// 郵箱校驗(yàn) checkingEmailRegExp(email)
export const checkingEmailRegExp = Exp(/^[a-z0-9_\.-]+@[a-z0-9_\.-]+[a-z0-9]{2,6}$/i)
// 使用:
checkingPhoneRegExp(123123) // false
checkingPhoneRegExp(1583963587) // true
// 郵箱驗(yàn)證也是一樣
優(yōu)化過后的手機(jī)號(hào)校驗(yàn)看起來是不是更好理解~
當(dāng)然,不止可以手機(jī)號(hào)殴俱,郵箱政冻,范圍還可以更廣,可以校驗(yàn)密碼线欲、賬戶明场、數(shù)字,帶來更好的復(fù)用李丰,更方便使用
我在這里簡單把例子1 用柯里化思想處理過后
如果理解了可以試著把例子2 在優(yōu)化一下