对于闭包我的理解

对于闭包我的理解

闭包这个概念以前看过几次,不是很理解,今天在菜鸟上又看了一遍,觉得自己好像理解了。在此记下。

其实,我觉得可以把闭包理解为为了解决计数器问题的一个方法吧。
什么是计数器问题呢?就是说,我要创建一个计数器函数,这个函数每执行一次,计数器就加1。
听起来很简单。于是就有人开始写函数。写函数为了保存你执行函数的次数,自然要创建一个变量。
那么,创建一个什么变量呢?
两种选择,要么全局变量,要么局部变量。

假如我创建一个全局变量,那么函数很好写,噼里啪啦写完后,发现,咦,虽然我这个函数功能执行没问题,但是这个全局变量很容易被别人串改啊。有时候自己可能在下面写着写着就忘了自己曾经创建过这个变量,然后一不小心就把这个变量改了,计数器就失常了。

这样一来,就考虑用局部变量。但局部变量也不行。局部变量是定义在函数内部的。你每调用一次函数,变量就会重新定义一次,重新赋值一次。结果就是,你每次调用这个函数,得到的结果都是一样的。这样的计数器函数根本没有作用。

这两种变量都不行。于是就有了闭包,能够让函数拥有一个私有变量。

私有变量是什么意思呢?就是说,我这个变量,是这个函数独有的,别的任何函数都改不了它。
但是这个说法不精确。因为局部变量也是这样的,局部变量也是只有本函数才能访问,外部访问不了。

私有变量与局部变量的区别就在于,它们的生命周期不同。局部变量,在函数执行结束后,变量就被销毁了,只有等到下次函数重新执行的时候,变量才会再次被创建(似乎这么说不是很精确,原谅我只是菜鸟)。所以局部变量起不到“记忆”的功能。但私有变量的生命周期是长的。即使函数结束,私有变量依然能“记住”刚才存了些什么在里面。

这就完美解决了上面的“计数器问题”。
简而言之,“闭包”能够创建“私有变量”,是为了解决全局变量与私有变量的局限性而提出来的一种解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值