日期:2014-05-16 浏览次数:20462 次
最近在看JavaScript,看到面向对象部分的适合,一个名词出现在我的面前,把我着实迷糊了一点时间,它的名字就是闭包。
首先说一下他的官方语言:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。反正我看这个是不太看的明白的,就好像你对一个完全不懂数学的人,用集合的方式和他说三范式他也会不懂一样,很苦涩,而且也很难想象。
我查了一下,闭包的应用大概有两点:
1、保护函数内的变量安全。
2、在内存中维持一个变量.
下面,先看一下怎样就算创建了一个闭包:
这段代码的特点是:i)函数b潜逃在a的内部 ii)函数a返回函数b
关于特点i很容易理解,那么特点ii呢?个人理解:a不必非要返回函数b,只要在函数a外调用函数b即可。
至此,不得不看一下下面这个经典的例子: