函数式编程的 柯里化

2016-12-20  本文已影响0人  黄清淮

作用:

1.参数复用
2.提前返回
3.延迟计算

正常情况下的绑定函数兼容写法

var addEvent = function(el, type, fn, capture) {
    if (window.addEventListener) {
        el.addEventListener(type, function(e) {
            fn.call(el, e);
        }, capture);
    } else if (window.attachEvent) {
        el.attachEvent("on" + type, function(e) {
            fn.call(el, e);
        });
    } 
};

提前返回 以下函数的绑定方式 只会执行一次if else 判断 不会像上方的每次都执行一次

var addEvent = (function(){
    if (window.addEventListener) {
        return function(el, sType, fn, capture) {
            el.addEventListener(sType, function(e) {
                fn.call(el, e);
            }, (capture));
        };
    } else if (window.attachEvent) {
        return function(el, sType, fn, capture) {
            el.attachEvent("on" + sType, function(e) {
                fn.call(el, e);
            });
        };
    }
})();

可参考:http://www.zhangxinxu.com/wordpress/2013/02/js-currying/

上一篇 下一篇

猜你喜欢

热点阅读