函数柯理化之参数复用

Posted web半晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数柯理化之参数复用相关的知识,希望对你有一定的参考价值。

// 普通函数验证
function check(regExp, text) {
    return regExp.test(text);
};

console.log(check(/^\\d+$/g, '123')); // true
console.log(check(/^\\d+$/g, '2d')); // false

console.log(check(/^[a-z]+$/g, 'text')); // true
console.log(check(/^[a-z]+$/g, '3d')); // false

// Currying 后
function curryingCheck(regExp) {
    return function(regExp) {
        return reg.test(regExp);
    };
};

let hasNumber = curryingCheck(/^\\d+$/g);
let hasLetter = curryingCheck(/^[a-z]+$/g);

console.log(hasNumber('159')); // true
console.log(hasNumber('2d')); // false

console.log(hasLetter('3d')); // false
console.log(hasLetter('text')); // true

示例是一个正则的校验,正常来说直接调用 check 函数就可以,但是如果有很多地方都要校验是否有数字,其实就是需要将第一个参数 reg 进行复用,这样别的地方就能够直接调用 hasNumber,hasLetter 等函数,让参数能够复用,调用起来也更方便。

以上是关于函数柯理化之参数复用的主要内容,如果未能解决你的问题,请参考以下文章

函数柯理化之递归封装

柯理化函数编程思想

函数柯理化之提前确认 (惰性函数)

柯理化

柯理化函数-初步封装

JS高阶编程技巧--柯理化函数