zoukankan      html  css  js  c++  java
  • javascript中使用函数的闭包做运算缓存

    定义一个cached函数作为存储变量的中间体:

    function cached(fn){
        var cache = Object.create(null);    
        return function(str){
            var hit = cache[str];
            return hit || (cache[str] = fn(str))
        }
    }

    在cached函数中,定义了一个cache的内部变量,该变量只能在其内部,或者其子函数内部被访问。

    var hyphenateRE = /B([A-Z])/g;
    var hyphenate = cached(function (str) {
          return str.replace(hyphenateRE, '-$1').toLowerCase()
    });

    然后定义一个驼峰转连接符的方法:

    在我们调用 hyphenate 方法的时候,会首先在其cache对象中查找是否有缓存的值,如果有直接返回,如果没有则执行处理函数并保存到缓存中;

    hyphenate 函数可以理解为:
    var hyphenate = function(str){
        // cache会作为该函数的一个闭包对象存在其内部作用域中(继承其父函数cached的作用域)
        var hit = cache[str];
        if(hit){
            return hit
        }else{
            return (cache[str] = str.replace(hyphenateRE, '-$1').toLowerCase())
        }
    }
  • 相关阅读:
    C++总结
    Perl注释格式
    处理压力测试中的问题
    C++标准库中的时间函数
    C语言中如何使用宏 转载
    探索C++的秘密之详解extern "C"
    调试代码的技巧
    又长一岁
    [转]pycharm的一些快捷键
    dizhi
  • 原文地址:https://www.cnblogs.com/recode-hyh/p/11179764.html
Copyright © 2011-2022 走看看