再论闭包
更正我长期以来似是而非的一个说法:
闭包使函数成为变量
更正:
闭包不是函数,只是行为和函数相似
说法A:认为闭包是函数(X)
说法B:认为闭包是函数和引用环境组成的整体(OK)
说明:
闭包只是在形式和表现上像函数,但实际上不是函数。
函数是一些可执行的代码,这些代码在函数被定义后就确定了,不会在执行时发生变化,所以一个函数只有一个实例。
闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。
老贴:《奇怪的局部变量》
http://topic.csdn.net/u/20090821/13/7c30e8cb-3d37-4d4f-9c11-0df1dd7be8f4.html
最佳参考:
《闭包的概念、形式与应用》
http://www.ibm.com/developerworks/cn/linux/l-cn-closure/index.html