柯里化:
理解: 是一种函数式编程的思想,将原本接收多个参数的函数,转变为接受一个参数, 使得js更好阅读。
优点:
降低函数的使用范围,提高适用性
参数复用
列如:
正常正则校验函数封装
// 列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);// 返回结果为25
使用柯里化函数 优化后:
// 柯里化 降低使用范围,提高适用性
function Exp(regExp: RegExp) {
return (str: string) => {
return regExp.test(str)
}
}
// 手机号校验 checkingPhoneRegExp(phone)
export const checkingPhoneRegExp = Exp(/^1[3-9]{1}\d{9}/)
// 邮箱校验 checkingEmailRegExp(email)
export const checkingEmailRegExp = Exp(/^[a-z0-9_\.-]+@[a-z0-9_\.-]+[a-z0-9]{2,6}$/i)
// 使用:
checkingPhoneRegExp(123123) // false
checkingPhoneRegExp(1583963587) // true
// 邮箱验证也是一样
优化过后的手机号校验看起来是不是更好理解~
当然,不止可以手机号,邮箱,范围还可以更广,可以校验密码、账户、数字,带来更好的复用,更方便使用
我在这里简单把例子1 用柯里化思想处理过后
如果理解了可以试着把例子2 在优化一下