在我们js开发过程中,都会遇到递归、闭包。但是官网解释太深奥了,不利于我们的理解。

1.闭包

  什么是闭包。我们先来看下下面的代码

function a(){
  var n = 0;
  function b() {
       console.log(n++);
  }
  b(); 
  b(); 
}
a(); //控制台输出0,再输出1

    下面再来看下面一段代码

function a(){
  var n = 0;
  this.b = function () {
     console.log(n++);
  };
}
var c = new a();
c.b();  //控制台输出0
c.b();  //控制台输出1

 什么是闭包?这就是闭包!

   有权访问另一个函数作用域内变量的函数都是闭包。这里 b 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。

 

 

posted on 2017-04-13 16:48  手指间的舞动  阅读(192)  评论(0编辑  收藏  举报