当前位置:C++技术网 > 资讯 > 什么才是闭包?本人谈谈几点理解

什么才是闭包?本人谈谈几点理解

更新时间:2016-03-06 22:11:33浏览次数:1+次

闭包的权威解释:

    闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。

案例代码:

JavaScript:


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


python:


>>> def myFun ():
	def childFun (number):
		number = number * 2
		return number
	return childFun

>>> fun = myFun()
>>> fun(2)
4

以上为案例代码,不知道读者看出了规律没?所谓的闭包就是利用了封闭的概念,一个包使用的时候,我只关心包里面有什么,不关心它怎么实现的,只需要知道我能从包中获得一个我需要的函数。就像一个函数集合一样,这样子,在修改的时候只需要修改那个包就可以了。


个人观点:所谓的闭包就像C++的头文件中的类的实现一样,我只需要从类中调用什么函数,如果需要修改功能,直接跳去那个类的实现中修改。