惰性函数

无论这个函数调用多少次,返回的都是第一次调用时候的结果。
惰性函数的意思就是,这个事儿我做了一次之后就再也不做了,你再怎么调用我,我也只能给你我第一次完成时的东西。

代码简单啊, 刚看到代码的我,蒙圈了~

var foo = function(){
  var t = new Date()
  foo = function(){
    return t
  }
  return foo()
}

看不懂怎么办?作为前端小白的自我修养,我默默的打开了chrome调试工具。


在作用域里面,t已经有了。foo最初指向的是最外层的函数,下面即将改变foo的指向。

t进入了闭包中,foo指向的是里面的函数,在后面多次的foo()调用中,都是调用的function(){return t},由于闭包,t一直被保存着。每次执行都返回了t

这样看来就很简单了。
整个代码第一次调用,生成了一个t = Thu Jul 25 2019 11:11:09 GMT+0800 (中国标准时间)。然后被存储了起来。
foo则指向了一个新的函数,最外层函数在返回foo()之后,就失去了作用。上面执行六次foo()函数,只有第一次是执行的最外层函数,后面五次都是新的函数。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天啊看到一篇讲js性能优化---惰性函数的文章,之前没听过这个。 主要应用在提高js的执行效能上,主要也是应用在...
    秋夜已凉阅读 361评论 4 0
  • 惰性函数 惰性载入表示函数执行的分支只会在函数第一次调用的时候执行,在第一次调用过程中,该函数会被覆盖为另一个按照...
    lwz4070阅读 238评论 0 0
  • 背景 在开发过程中,有时候需要对浏览器环境进行检测,比如封装一个AJAX函数的时候需要写一个函数进行检测,但是常规...
    Binaryify阅读 1,498评论 0 1
  • 需求 我们现在需要写一个 foo 函数,这个函数返回首次调用时的 Date 对象,注意是首次。 解决一:普通方法 ...
    Vicky丶Amor阅读 293评论 2 4
  • 概念及用处 惰性函数是针对优化频繁使用的函数 它常用于函数库的编写、单例模式中 示例1 要求:编写一个函数test...
    风雅欢乐阅读 574评论 0 0