♫【模式】Curry化

/**
 * 当发现正在调用同一个函数,并且传递的参数绝大多数都是相同的,
 * 那么该函数可能是用于Curry化的一个很好的候选参数
 */
;(function() {
    function add(x, y) {
        if (typeof y === 'undefined') {
            return function(y) {
                return x + y
            }
        }
        return x + y
    }
    console.log(add(1)(3))
}())
;(function() {
    function schonfinkelize(fn) {
        var slice = Array.prototype.slice
        var stored_args = slice.call(arguments, 1)
        return function() {
            var new_args = slice.call(arguments)
            var args = stored_args.concat(new_args)
            return fn.apply(null, args)
        }
    }
    function add(x, y) {
        return x + y
    }
    console.log(schonfinkelize(add, 4)(5))
})()
原文地址:https://www.cnblogs.com/jzm17173/p/3506313.html