本文共 408 字,大约阅读时间需要 1 分钟。
可以这么理解(闭包):所谓包,指函数与其周围的环境变量捆绑打包;所谓闭,指这些变量是封闭的,只能为该函数所专用。合理地使用闭包能使代码更加简洁清晰,散发出函数式特有的优雅气质。
另外,我们不妨认为闭包就是封装了环境变量的隐形对象的方法–通常是匿名方法。
函数对象可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性在计算机科学文献中称为‘闭包’, 从技术角度讲,所有Javascript函数都是闭包:它们都是对象,它们都关联到作用域链。
看了几页”Python Cookbook”,上面有一句话形容闭包,觉得很形象: 闭包 是一次性完成所有准备工作的最好方法,它能够返回一个满足需求的快速过滤函数.
这里其实就是一个最简单的闭包:
上图: 注意看 Closure里面的 passed: 3
这里是一个典型的返回内部函数的闭包:
ES6有块作用域了,这里需要进一步了解和学习下.