关于闭包即双层装饰器的理解

** 闭包**:就是一个概念,出现在嵌套函数中,指的是内层函数引用到了外层函数的**自由变量**(未在本地作用域中定义的局部变量),就形成了闭包。

 函数的局部作用域是不能够保存信息的,即在函数内部声明变量在函数调用结束之后函数里面保存的信息就被销毁了,包括函数的参数。而这时使用闭包的话就能发挥作用:
**保存函数的状态信息,使函数的局部变量信息依然可以保存下来**。形成闭包之后,闭包变量能够随着闭包函数的调用而实时更新,就好像是一个全局变量那样。

关于闭包即双层装饰器的理解

我们发现每次再运行该函数,里面的count变量其实已然保存。如果你希望函数的每次执行结果,都是基于这个函数上次的运行结果。
通过以上简单的代码就很明了了闭包的好处之一。
另一个好处:闭包可以根据外部作用域的局部变量来得到不同的结果,这有点像一种类似配置功能的作用,我们可以修改外部的变量,闭包根据这个变量展现出不同的功能。这点在装饰器中得到大量运用。

**多层装饰器**的运行套用都是从下套上,一层套一层,具体看一下代码就明晓。

关于闭包即双层装饰器的理解

两层装饰器能很好的完成注册,方便构成架子写进不同函数:
关于闭包即双层装饰器的理解

猜你喜欢

转载自blog.51cto.com/13929187/2169162
今日推荐