一大早有人说 闭包是干啥的 我咋写项目也没用到过 哎嘿 

突发奇想写一点吧

闭包就是能够读取其他函数内部变量的函数。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁(摘自百度百科)

个人理解 闭包就是函数嵌套函数 

闭包的特点很鲜明,闭包内,变量无法释放,无法被直接访问;闭包可以被延迟执行

var haha = (function () {
  var a = 0;
  return function () {
  console.log(a);
    return a++;
  }
})();
haha()
haha()
haha()

那么请你复制这段代码 打开F12 控制台 放进去  

那么现在 可以看到了这个数字是在增加的  是按照原来的变量依次增加  也就达到了它的目的  这个变量是不会被垃圾回收机制回收的变量 所以永久驻留在内存中

那么 什么时候需要用到闭包   呐  给你一个回调函数   你说它是不是闭包    答案是肯定的 

1. 管理私有变量和私有方法,将对变量(状态)的变化封装在安全的环境中

2. 将代码封装成一个闭包形式,等待时机成熟的时候再使用,比如实现柯里化和反柯里化(概念请参见http://www.zhangxinxu.com/wordpress/2013/02/js-currying/(张大神 解释的狠清晰))

当然也有一些缺点 由于闭包内的部分资源无法自动释放,容易造成内存泄露

好吧 不码字了 赶项目去

 

posted on 2018-02-03 10:32  光明顶大佬  阅读(75)  评论(0)    收藏  举报