日期:2014-05-16  浏览次数:20442 次

带你理解JavaScript中的闭包

        最近在看JavaScript,看到面向对象部分的适合,一个名词出现在我的面前,把我着实迷糊了一点时间,它的名字就是闭包。

        首先说一下他的官方语言:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。反正我看这个是不太看的明白的,就好像你对一个完全不懂数学的人,用集合的方式和他说三范式他也会不懂一样,很苦涩,而且也很难想象。

        我查了一下,闭包的应用大概有两点:

                1、保护函数内的变量安全。

                2、在内存中维持一个变量.

        下面,先看一下怎样就算创建了一个闭包:

        这段代码的特点是:i)函数b潜逃在a的内部    ii)函数a返回函数b

        关于特点i很容易理解,那么特点ii呢?个人理解:a不必非要返回函数b,只要在函数a外调用函数b即可。

        至此,不得不看一下下面这个经典的例子: