函数柯里化

作者: 肆意木 | 来源:发表于2019-10-15 14:26 被阅读0次

    定义

    是把接受多个参数的函数变换成接受一个单一参数的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

    为什么要这样做?

    可以做到参数复用

    提前确认,避免多次判断

    延迟运行(bind的实现机制就是柯里化)

    性能问题

    存取arguments对象通常要比存取命名参数要慢一点

    一些老版本的浏览器在arguments.length的实现上是相当慢的

    使用fn.apply( … ) 和 fn.call( … )通常比直接调用fn( … ) 稍微慢点

    创建大量嵌套作用域和闭包函数会带来花销,无论是在内存还是速度上

    Demo

    // 正常正则验证字符串 reg.test(txt)
    
    // 函数封装后
    function check(reg, txt) {
        return reg.test(txt)
    }
    
    check(/\d+/g, 'test')       //false
    check(/[a-z]+/g, 'test')    //true
    
    // Currying后
    function curryingCheck(reg) {
        return function(txt) {
            return reg.test(txt)
        }
    }
    
    var hasNumber = curryingCheck(/\d+/g)
    var hasLetter = curryingCheck(/[a-z]+/g)
    
    hasNumber('test1')      // true
    hasNumber('testtest')   // false
    hasLetter('21212')      // false
    

    相关文章

      网友评论

        本文标题:函数柯里化

        本文链接:https://www.haomeiwen.com/subject/emgwtctx.html