js的闭包2

当function里嵌套function时,内部的function可以访问外部function里的变量。

先来说些,介绍些闭包的用处:就是为了避免内存泄露而存在的,闭包重点(或者意义)就是理解js的作用域;

1.缓存
2.面向对象中的对象
3.实现封装,防止变量跑到外层作用域中,发生命名冲突
4.匿名自执行函数,匿名自执行函数可以减小内存消耗
.

但我的观点依然是:

不要刻意避免使用闭包,但也不应该非要闭包。按代码设计来,按编程节奏来

function foo(x) {

  var tmp = 3;

  function bar(y) {

    alert(x + y + (++tmp));

  }

  bar(10);

}

foo(2);

 推荐:此文非常之好:https://zhuanlan.zhihu.com/p/22486908?refer=study-fe
 
var local='变量'
function foo(){
  console.log(local);
}
 
假设上面三行代码在一个立即执行函数中(为简明起见,我就不写立即执行函数了,影响读者理解)
 

上面三行代码在一个立即执行函数中。

三行代码中,有一个局部变量 local,有一个函数 foo,foo 里面可以访问到 local 变量。

好了这就是一个闭包:

「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。

就这么简单。

如果还不够了解,可以去看推荐网址。

js闭包的闭包1

原文地址:https://www.cnblogs.com/luoyuji/p/7979520.html