函数柯里化

定义

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

为什么要这样做?

可以做到参数复用

提前确认,避免多次判断

延迟运行(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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容