(Javascript) 猴子也明白 之 闭包超级入门 1 问题
问题
问题:请写一个函数 f () ,随着调用次数,输出1,2,3,…
f(); // 1
f(); // 2
f(); // 3
如何解决这一问题?
一般的函数就很难做到。但用了闭包,一切皆有可能!
闭包是神马?
看完各种百科之后仍然一头雾水的童靴不在少数?
我也是一直不解,记得第一回看到如下描述时,
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。
罢了,完全不懂(内牛满面)。
随着岁月流逝。。。。
直到最近学习Javascript之后,突然能理解了--
与其说是理解,不如说是“也能写闭包”了。
“也不知道怎么地,就学会了骑自行车了”,就是这种年少时的心情。
以下,是我与学习闭包的“战斗”中学到的经验:
比起理解什么是闭包,写一个闭包更简单。
写一个闭包,只要做到以下3步。
写闭包的3步
- 函数中的函数
- 匿名函数
- 函数返回函数
好好理解这3点,就可以写出闭包,进而理解闭包了。
通过写一个闭包来理解闭包。
比起理解什么是闭包,写一个闭包更简单。
以上是关键点。