如何理解并写好柯里化

柯里化:

理解: 是一种函数式编程的思想,将原本接收多个参数的函数,转变为接受一个参数, 使得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 在优化一下

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容