您当前的位置: 首页 > 

暂无认证

  • 1浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

柯理化函数 -- 参数复用

发布时间:2021-03-15 22:57:44 ,浏览量:1

目录
    • 1、正常函数封装
    • 2、Currying 后
1、正常函数封装
function check(reg, txt) { return reg.test(txt); }; check(/\d+/g, 'test'); // false check(/[a-z]+/g, 'test'); // true 

缺点:每次调用都要多传一个参数

2、Currying 后
function curryingCheck(reg) { // 使用闭包机制保存 reg 值 // 形成多个执行上下文 // 通过外部调用的引用,使其作用域无法释放 return function(txt) { return reg.test(txt); }; }; // 使用变量接收外部函数返回的内部函数 // 在调用外部函数的时候传递参数,并且参数会保存在闭包中 // 当调用内部函数时会通过作用域链机制找到外层函数保存的变量 let hasNumber = curryingCheck(/\d+/g); let hasLetter = curryingCheck(/[a-z]+/g); // 此时调用的是返回的内部函数 hasNumber('test1'); // true hasNumber('testtest'); // false hasLetter('21212'); // false 

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

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.4468s