zoukankan      html  css  js  c++  java
  • 惰性函数

    外国网址乱逛发现的,一种非常高效的写法,用于存储需要经过非常复杂计算得出的变量。原文的例子与我的有点出入。

    经典的写法,利用上层作用域的变量储存它。缺点如下,好容易暴露成全局变量,造成管理混乱,并且每次执行都要判断分支条件if(t)是否返回true。

    模块模式,就是把第一方法全部封进闭包中,这样就不污染全局变量。还是保留判断分支条件的缺点。

    利用函数也是一种对象,把参数当做它的键,计算得到的值为它的值。比上面的直观,但一样要判断分支条件。

    惰性函数。这才是正点。第一次计算得到的值,供内部函数调用,然后用这个内部函数重置外部函数(因为同名),以后就不用计算了,也不用判断分支条件。这时函数就相当于一个被赋值的变量!

            dom.feature.bodyOffsetNotIncludeMargin = function(){
                var el = dom.body(),//DOM树遍历操作
                result = parseFloat(dom.getStyle(el,"margin-top"))!== el.offsetTop;//复杂的比较运算
                dom.feature.bodyOffsetNotIncludeMargin = function(){
                    return result;//缓存结果,第一次之后直接返回,再不用计算;
                }
                return result;//第一次执行结果
            }
    
  • 相关阅读:
    用户空间与内核空间,进程上下文与中断上下文[总结]【转】
    select、poll、epoll之间的区别总结[整理]【转】
    v4l2驱动文档之——streaming IO【转】
    Linux网络编程一步一步学【转】
    V4L2驱动的移植与应用(二+三)【转】
    【PHP面向对象(OOP)编程入门教程】20.PHP5接口技术(interface)
    【PHP面向对象(OOP)编程入门教程】19.抽象方法和抽象类(abstract)
    【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误
    【PHP面向对象(OOP)编程入门教程】17.克隆对象__clone()方法
    【PHP面向对象(OOP)编程入门教程】16.__toString()方法
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1593094.html
Copyright © 2011-2022 走看看