你对闭包了解多少?

“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 相信很少有人能直接看懂这句话,因为他描述的太学术。我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非常困难的。看下面这段代码:

  function a(){
      var i=0;
      function b(){
          alert(++i);
      }
      return b;
  }
  var c = a();
  c();

这段代码有两个特点:
1、函数b嵌套在函数a内部;
2、函数a返回函数b。

引用关系如图: 这样在执行完var c=a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。 这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说: 当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。
我猜想你一定还是不理解闭包,因为你不知道闭包有什么作用,看完下面两个链接的内容,估计就明白了。  

JS闭包的概念:http://zhidao.baidu.com/question/317093448.html
闭包:http://baike.baidu.com/view/648413.htm

Loading Disqus comments...
Table of Contents