柯理化函数究竟怎么用?如何理解?
如何理解?
可以理解成就是把参数一个个拆开,然后在函数里面返回一个函数去去接受传入的后面的第二个以及后面的参数如下
//函数柯理化
function add(x, y) {
return x + y
}
function currli(x){
return function(y){
return x+y
}
}
console.log(add(1,2))
console.log(currli(1)(5))
// 正常正则验证字符串 reg.test(txt)
好处是什么?
我们可以实现参数复用,比如写一个正则表达式,传入第一个参数来作为正则校验,然后调用这个函数时在传入一个参数也就是第二个参数,用来被校验的字符串如下:
// 函数封装后使用
function check(reg, txt) {
return reg.test(txt)
}
check(/\d+/g, ‘test’) //false
check(/[a-z]+/g, ‘test’) //true
//柯理化函数之后
function curryingCheck(reg) {
return function(txt) {
return reg.test(txt)
}
}
//第一步我们利用工厂方法来给柯理化函数传入第一个字
var hasNumber = curryingCheck(/\d+/g)
var hasLetter = curryingCheck(/[a-z]+/g)
//我们定义了两个函数hasNumber和hasLetterbin传入了柯理化的第一个值也就是reg
// 所以我们可以直接调用这个函数传入参数来执行校验下面传入的参数也就是第二个参数第一个参数就是上面的正则表达式
hasNumber(‘test1’) // true
hasNumber(‘testtest’) // false
hasLetter(‘21212’) // false
当然这只是简单的理解