今天被小伙伴问到了闭包,虽然自己原来也看到一些关于闭包的文章,但是发现自己什么都说不出,所以又到了学习的时刻了。
首先先去百科了下闭包的概念:1
闭包就是能够读取其他函数内部变量的函数。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
咱们将这段话拆分一下:
- 能到读取到其他函数内部变量的函数。
首先闭包也是一个“函数”,然后才是有“能够读取到其他函数变量”的功能。 - javascript中理解成“定义在一个函数内部的函数”
- 将函数内部和外部连接起来的桥梁
将话分成了三部分,果然理解起来就容易多了。我在网上也找到了很多介绍闭包的文章,例如http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html,但无奈本人是java程序员理解起来还是不够清晰,所以还是谢了自己的java理解版本,如下: