zoukankan      html  css  js  c++  java
  • 函数柯里化

    什么是函数柯里化?

    就是将一个多参数函数,转换为单一参数(原参数的第一个)的函数,并在其返回函数中传入余下参数、返回结果。

    柯里化有哪些好处?

    参数复用

    在以下柯里化函数中,只需要第一次传入正则表达式,后面只要是检测同一正则表达式就只需调用返回的函数

    function check(reg){
        return function(str){
            return reg.test(str);
        }
    }
    
    var checknum = check(/^[0-9]+$/);
    var checkStr = check(/^[a-zA-Z]+$/);
    console.log(checknum('123456'));
    console.log(checknum('1234sd'));
    console.log(checkStr('adafd'));
    console.log(checkStr('ads2'));

    提前判断

    在以下代码中,提前判断浏览器是否支持addEventListener,再返回相应函数,就不用每次注册事件都进行判断

    var on = (function () {
        if (document.addEventListener) {
            return function (element, event, handler) {
                if(element && event && handler){
                    element.addEventListener(event, handler, false)
                }
            };
        }else{
            return function(element, event, handler){
                if(element && event && handler){
                    element.attachEvent('on' + event, handler)
                }    
            }
        }
    })();

    实现bind函数、延迟执行

    为函数改变this指向,并返回函数,执行函数才会执行

    Function.prototype.bind = function(context){
        var _this = this;
        var args = Array.prototype.slice.call(arguments, 1);
        return function () {
            return _this.apply(context, args.concat(Array.prototype.slice.call(arguments)))
        }
    }

    通用封装

    function currying(fn) {
        var l = fn.length,
        args = [];
        var result = function (arg) {
            args.push(arg);
            l--;
            if (l <= 0) {
                return fn.apply(this, args);
            }else{
                return result;
            }
        }
        return result;
    }
  • 相关阅读:
    JSON AND BSON
    xom报错 Exception in thread "main" java.net.UnknownHostException: file
    创建weblogic受管理服务器和安全文件
    创建weblogic domain
    安装weblogic步骤
    python读取excel表格生成sql语句 第一版
    nutz框架使用记录之Cnd.wrap
    IDEA 导入cordova3.5工程目录注意事项
    javascript类继承
    使用nodejs 访问mongodb
  • 原文地址:https://www.cnblogs.com/ashen1999/p/12755686.html
Copyright © 2011-2022 走看看