什么是闭包

什么是闭包?这就是闭包!简单吧。


有权访问另一个函数作用域内变量的函数都是闭包。这里 couter 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。 再来看一段代码:


function a(){

  var n = 0;

  function couter(){

    n++;

    console.log(n);

  }

  return couter;

}

var c = a();

c(); //控制台输出1

c(); //控制台输出2

看看是怎么执行的: var c = a(),这一句 a()返回的是函数 couter,那这句等同于 var c = couter; c(),这一句等同于 couter(); 注意,函数名只是一个标识(指向函数的指针),而()才是执行函数。 后面三句翻译过来就是: var c = couter; couter(); couter();,跟第一段代码有区别吗? 没有。

你可能感兴趣的:(什么是闭包)