惰性函数

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

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

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()函数,只有第一次是执行的最外层函数,后面五次都是新的函数。

全部评论

相关推荐

投递拼多多等公司10个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务