js的柯里化(curry)

什么是柯里化?

将使用多个参数的函数转换成一系列使用一个参数的函数

柯里化的用途?

柯里化实际将简单的问题复杂化了,单复杂化的同时,使用函数时拥有了更多的自由度

如常用手机号码校验:

function checkRegExp(regexp, string) {
        return regexp.test(string)
}
console.log(checkRegExp(/^1\d{10}$/, '15770638063'))

如果校验多个电话号码,则相同的正则我们需要写多次。

如果用柯里化来封装,先简单实现一个curry函数

 function curry(fn, args) {
        var args = args || []
        let len = fn.length
        return function() {
            let _args = args.concat(Array.prototype.slice.call(arguments, 0))
            if (_args.length >= len) {
                return fn.apply(this, _args)
            } else {
                return curry.call(this, fn, _args)
            }
        }
    }

我们用curry函数再封装手机校验函数,达到参数复用的目的

 let _curry = curry(checkRegExp)
 let chekcPhone = _curry(/^1\d{10}$/)

最后调用时直接传手机号码即可:

console.log(chekcPhone('15770638063'))
console.log(chekcPhone('13722347879'))
console.log(chekcPhone('18909098989'))

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值